W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
節(jié)點問題檢測器(Node Problem Detector) 是一個守護程序,用于監(jiān)視和報告節(jié)點的健康狀況。 你可以將節(jié)點問題探測器以 ?DaemonSet
?或獨立守護程序運行。 節(jié)點問題檢測器從各種守護進程收集節(jié)點問題,并以 ?NodeCondition
?和 ?Event
?的形式報告給 API 服務(wù)器。
要了解如何安裝和使用節(jié)點問題檢測器,請參閱 節(jié)點問題探測器項目文檔。
你必須擁有一個 Kubernetes 的集群,同時你的 Kubernetes 集群必須帶有 kubectl 命令行工具。 建議在至少有兩個節(jié)點的集群上運行本教程,且這些節(jié)點不作為控制平面主機。 如果你還沒有集群,你可以通過 Minikube 構(gòu)建一個你自己的集群,或者你可以使用下面任意一個 Kubernetes 工具構(gòu)建:
一些云供應(yīng)商將節(jié)點問題檢測器以插件形式啟用。 你還可以使用 ?kubectl
?或創(chuàng)建插件 Pod 來啟用節(jié)點問題探測器。
?kubectl
?提供了節(jié)點問題探測器最靈活的管理。 你可以覆蓋默認(rèn)配置使其適合你的環(huán)境或檢測自定義節(jié)點問題。例如:
node-strought-detector.yaml
? 的節(jié)點問題檢測器配置:apiVersion: apps/v1
kind: DaemonSet
metadata:
name: node-problem-detector-v0.1
namespace: kube-system
labels:
k8s-app: node-problem-detector
version: v0.1
kubernetes.io/cluster-service: "true"
spec:
selector:
matchLabels:
k8s-app: node-problem-detector
version: v0.1
kubernetes.io/cluster-service: "true"
template:
metadata:
labels:
k8s-app: node-problem-detector
version: v0.1
kubernetes.io/cluster-service: "true"
spec:
hostNetwork: true
containers:
- name: node-problem-detector
image: k8s.gcr.io/node-problem-detector:v0.1
securityContext:
privileged: true
resources:
limits:
cpu: "200m"
memory: "100Mi"
requests:
cpu: "20m"
memory: "20Mi"
volumeMounts:
- name: log
mountPath: /log
readOnly: true
volumes:
- name: log
hostPath:
path: /var/log/
Note: 你應(yīng)該檢查系統(tǒng)日志目錄是否適用于操作系統(tǒng)發(fā)行版本。
kubectl
?啟動節(jié)點問題檢測器:kubectl apply -f https://k8s.io/examples/debug/node-problem-detector.yaml
如果你使用的是自定義集群引導(dǎo)解決方案,不需要覆蓋默認(rèn)配置, 可以利用插件 Pod 進一步自動化部署。
創(chuàng)建 ?node-strick-detector.yaml
?,并在控制平面節(jié)點上保存配置到插件 Pod 的目錄 ?/etc/kubernetes/addons/node-problem-detector
?。
構(gòu)建節(jié)點問題檢測器的 docker 鏡像時,會嵌入 默認(rèn)配置。
不過,你可以像下面這樣使用 ?ConfigMap
?將其覆蓋:
config/
? 中的配置文件ConfigMap
??node-strick-detector-config
?:kubectl create configmap node-problem-detector-config --from-file=config/
node-problem-detector.yaml
? 以使用 ConfigMap:apiVersion: apps/v1
kind: DaemonSet
metadata:
name: node-problem-detector-v0.1
namespace: kube-system
labels:
k8s-app: node-problem-detector
version: v0.1
kubernetes.io/cluster-service: "true"
spec:
selector:
matchLabels:
k8s-app: node-problem-detector
version: v0.1
kubernetes.io/cluster-service: "true"
template:
metadata:
labels:
k8s-app: node-problem-detector
version: v0.1
kubernetes.io/cluster-service: "true"
spec:
hostNetwork: true
containers:
- name: node-problem-detector
image: k8s.gcr.io/node-problem-detector:v0.1
securityContext:
privileged: true
resources:
limits:
cpu: "200m"
memory: "100Mi"
requests:
cpu: "20m"
memory: "20Mi"
volumeMounts:
- name: log
mountPath: /log
readOnly: true
- name: config # Overwrite the config/ directory with ConfigMap volume
mountPath: /config
readOnly: true
volumes:
- name: log
hostPath:
path: /var/log/
- name: config # Define ConfigMap volume
configMap:
name: node-problem-detector-config
# 如果你正在運行節(jié)點問題檢測器,請先刪除,然后再重新創(chuàng)建
kubectl delete -f https://k8s.io/examples/debug/node-problem-detector.yaml
kubectl apply -f https://k8s.io/examples/debug/node-problem-detector-configmap.yaml
Note: 此方法僅適用于通過 ?
kubectl
?啟動的節(jié)點問題檢測器。
如果節(jié)點問題檢測器作為集群插件運行,則不支持覆蓋配置。 插件管理器不支持 ?ConfigMap
?。
內(nèi)核監(jiān)視器(Kernel Monitor) 是節(jié)點問題檢測器中支持的系統(tǒng)日志監(jiān)視器守護進程。 內(nèi)核監(jiān)視器觀察內(nèi)核日志并根據(jù)預(yù)定義規(guī)則檢測已知的內(nèi)核問題。
內(nèi)核監(jiān)視器根據(jù) ?config/kernel-monitor.json
? 中的一組預(yù)定義規(guī)則列表匹配內(nèi)核問題。 規(guī)則列表是可擴展的,你始終可以通過覆蓋配置來擴展它。
要支持新的 ?NodeCondition
?,請在 ?config/kernel-monitor.json
? 中的 ?conditions
?字段中創(chuàng)建一個條件定義:
{
"type": "NodeConditionType",
"reason": "CamelCaseDefaultNodeConditionReason",
"message": "arbitrary default node condition message"
}
你可以使用新的規(guī)則描述來擴展 ?config/kernel-monitor.json
? 中的 ?rules
?字段以檢測新問題:
{
"type": "temporary/permanent",
"condition": "NodeConditionOfPermanentIssue",
"reason": "CamelCaseShortReason",
"message": "regexp matching the issue in the kernel log"
}
檢查你的操作系統(tǒng)(OS)發(fā)行版本中的內(nèi)核日志路徑位置。 Linux 內(nèi)核日志設(shè)備 通常呈現(xiàn)為 ?/dev/kmsg
?。 但是,日志路徑位置因 OS 發(fā)行版本而異。 ?config/kernel-monitor.json
? 中的 ?log
?字段表示容器內(nèi)的日志路徑。 你可以配置 ?log
?字段以匹配節(jié)點問題檢測器所示的設(shè)備路徑。
內(nèi)核監(jiān)視器使用 ?Translator
?插件轉(zhuǎn)換內(nèi)核日志的內(nèi)部數(shù)據(jù)結(jié)構(gòu)。 你可以為新的日志格式實現(xiàn)新的轉(zhuǎn)換器。
建議在集群中運行節(jié)點問題檢測器以監(jiān)控節(jié)點運行狀況。 運行節(jié)點問題檢測器時,你可以預(yù)期每個節(jié)點上的額外資源開銷。 通常這是可接受的,因為:
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: