微信公众号:运维开发故事,作者:夏老师
组件故障@H_404_9@
组件故障可以认为是节点故障的子类,只是故障来源是K8S基础组件的一部分。
DNS故障:6个DNS Pod中的2个出现无法解析外部DNS名称的情况。后果是大量线上业务因域名解析。
CNI故障:少数几个节点的容器网络和外部断开,节点访问自身的Pod IP没有问题,但是其它节点无法访问故障节点的Pod IP。这种情况下,Pod本机的健康检查无效,导致故障实例持续存在,一定比例的业务请求失败。
kubenurse会对ingress、dns、apiserver、kube-proxy进行网络探测。
可以参考:
使用KubeNurse进行集群网络监控
乔克,公众号:运维开发故事使用KubeNurse进行集群网络监控
节点故障@H_404_9@
node-problem-detector
1、NodeCondition(节点状况): 这是指永久性的错误,它将造成pod无法在这个节点运行。这个节点状况只有在节点重启后才会被重置
2、Event(事件): 影响节点的临时性问题,但是它是对于系统诊断是有意义的。NPD就是利用kubernetes的上报机制,通过检测系统的日志(例如centos中journal),把错误的信息上报到kuberntes的node上。故障节点上的事件,会记录在宿主机的某些日志中。这些日志(例如内核日志)中噪音信息太多,NPD会提取其中有价值的信息,可以将这些信息报送给Prometheus,也会生成离线事件。这些信息可以推送到企业微信,人工处理。也可以对应到自愈系统的方法库,自动恢复。在裸金属K8S集群中,由于缺乏基础设施的支撑,自动扩充节点可能无法实现,只能通过更加精细的自动化运维,治愈节点的异常状态。
以CNI故障为例,可能的治愈流程如下:
-
如果上述步骤无效,尝试删除节点上负责CNI的Pod,以重置节点的路由、Iptables配置
-
如果上述步骤无效,尝试重启容器运行时
-
告警,要求运维人员介入
部署NPD实践你需要有一个k8s集群,必须有1个以上的worker节点。大家可以参考https://github.com/kubernetes/node-problem-detector。
主要参数:
--prometheus-address: 默认绑定地址127.0.0.1,如果需要推送给promethues,需要修改。
--config.system-log-monitor: 节点问题检测器将为每个配置启动一个单独的日志监视器.案例: config/kernel-monitor.json。
--config.custom-plugin-monito: 节点问题检测器将为每个配置启动一个单独的自定义插件监视器。案例: config/custom-plugin-monitor.json
将代码克隆到本地,按照自己的需求更改deployment文件中的DaemonSet,执行以下内容:
创建ConfigMap:
kubectl create -f node-problem-detector-config.yaml
创建DaemonSet:
kubectl create -f node-problem-detector.yaml
如何验证NPD捕获信息这部分,可以在测试集群的node几点上做。
sudo sh -c "echo 'kernel: BUG: unable to handle kernel NULL pointer dereference at TESTING' >> /dev/kmsg"
可以在kubectl describe nodes x.x.x.x 中看到KernelOops事件的告警。
sudo sh -c "echo 'kernel: INFO: task docker:20744 blocked for more than 120 seconds.' >> /dev/kmsg"
可以在kubectl describe nodes x.x.x.x 中看到DockerHung事件的告警。
如果事件告警接到了promethues,可以配置策略,发送到微信。
- END -
公众号:运维开发故事
github:https://github.com/orgs/sunsharing-note/dashboard
爱生活,爱运维
如果你觉得文章还不错,就请点击右上角选择发送给朋友或者转发到朋友圈。您的支持和鼓励是我最大的动力。喜欢就请关注我吧~
扫码二维码
关注我,不定期维护优质内容
温馨提示
如果你喜欢本文,请分享到朋友圈,想要获得更多信息,请关注我。
........................
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。