前言
在kubernetes中,会将交付场景中的大部分实体都抽象为一个逻辑的概念,例如:接入层抽象为Service,存储层抽象为PV/PVC,不同种类的应用抽象为Deployment、StatefulSet等等。这种抽象的方式不仅仅将交付变成了软件定义式的配置,更多的是规约了一种标准化,这种标准化不仅仅是交付内容的标准化,也包括了交付方式的标准化,甚至交付生命周期的标准化。
交付内容的标准化与交付方式的标准化是非常好理解的,那么交付生命周期的标准化怎么理解呢。我们可以通过kubectl describe deploy [deploy name]
的方式查看一个Deployment的状态描述。
NPD
Node的主要影响kuberntes稳定性的因素
硬件错误
- CPU坏了
- Memory坏了
- 磁盘坏了
kernel问题
- kernel deadlock (内核死锁)
- corrupted file systems (文件系统崩溃)
- unresponsive runtime daemons (系统运行后台进程无响应)
docker问题
- unresponsive runtime daemons (docker后台进程无响应)
- docker image error (docker文件系统错误)
Node问题上报机制
Kubernetes支持两种上报机制:
- NodeCondition(节点状况): 这是指永久性的错误,它将造成pod无法在这个节点运行。这个节点状况只有在节点重启后才会被重置
- Event(事件): 影响节点的临时性问题,但是它是对于系统诊断是有意义的
Node Problem Detector(NPD)
NPD就是利用kubernetes的上报机制,通过检测系统的日志(例如centos中journal),把错误的信息上报到kuberntes的node上。
安装
1 | git clone https://github.com/vipdocker/npd-centos.git |
eventer
钉钉报警
1 | apiVersion: extensions/v1beta1 |
sls报警
1 | apiVersion: extensions/v1beta1 |
文章出自
https://yq.aliyun.com/articles/653451?spm=a2c4e.11153940.0.0.2ae96c9dHfwXlu
https://yq.aliyun.com/articles/656266?spm=a2c4e.11155435.0.0.6cbe5749apvHLq