k8s Node-problem-detector
# k8s Node-problem-detector
## Kubernetes集群可能存在的问题
- 基础架构守护程序问题: NTP服务关闭
- 硬件问题:CPU,内存或磁盘损坏 内核问题:内核死锁,文件系统损坏
- 容器运行时问题:运行时守护程序无响应
当Kubernetes中节点发生上述问题,在整个集群中,k8s服务组件并不会感知以上问题,就会导致pod仍会调度至问题节点。
## Node-problem-detector
为了解决这个问题,社区引入了守护进程node-problem-detector,从各个守护进程收集节点问题,并使它们对上游层可见。
Kubernetes节点诊断的工具,可以将节点的异常,例如:
- Runtime无响应;
- Linux kernel无响应;
- 网络异常 ;
- 文件描述符异常;
- 硬件问题如cpu,内存或者磁盘故障。
## 故障分类
问题汇报手段
Node-problem-detector通过设置NodeCondition或者创建event对象来汇报问题。
NodeCondition: 针对永久性故障,会通过NodeCondition来改变节点状态
Event:临时故障通过event来提醒相关对象,比如通过当前节点运行的所有pod。
## helm安装
[Node-problem-detector](https://github.com/deliveryhero/helm-charts/tree/master/stable/node-problem-detector)
```
helm repo add deliveryhero https://charts.deliveryhero.io/
helm install deliveryhero/node-problem-detector
# 拉取到本地
helm fetch deliveryhero/node-problem-detector
# 镜像拉取不到替换docker pull lank8s.cn/node-problem-detector/node-problem-detector:v0.8.15
```