我在一个相对较新的群集中遇到了一些问题,其中几个节点(总是成对出现,但可能只是一个巧合)将变为“未就绪”,并且kubectl describe
表示Kubelet停止发布节点状态用于内存,磁盘,PID和就绪。
所有正在运行的Pod都卡在了Termination中(可以使用k9s连接到集群并看到此消息),而我发现的唯一解决方案是封锁并耗尽节点。几个小时后,似乎已删除它们并创建了新的。或者,我可以使用kubectl删除它们。
通过ssh(超时)完全无法访问它们,但是AWS报告EC2实例没有问题。
在过去的一周里,这已经发生了三遍。一切都可以恢复,但是显然存在一些问题,我想深入了解它。
如果我根本无法上箱,我该如何去发现发生了什么? (实际上我只是想为卷拍摄快照并挂载它,因此如果再次发生,将尝试这样做,但是欢迎其他建议)
运行kubernetes v1.18.8
答案 0 :(得分:0)
这里有两种最常见的可能性,这两种可能性很可能是大负载造成的:
Out of Memory
错误。可以通过在--kubelet-extra-args
中添加适当的BootstrapArguments
来解决。例如:--kubelet-extra-args "--kube-reserved memory=0.3Gi,ephemeral-storage=1Gi --system-reserved memory=0.2Gi,ephemeral-storage=1Gi --eviction-hard memory.available<200Mi,nodefs.available<10%"
一个here解释的问题:
kubelet有时无法修补其节点状态,例如超过250个 资源保留在节点上,kubelet无法观看超过250个流 与kube-apiserver同时使用。所以,我只是调整kube-apiserver --http2-max-streams-per-connection到1000以减轻痛苦。
您可以调整上面提供的值,也可以尝试找出造成高负载/峰值的原因并尝试将其调低。
答案 1 :(得分:0)
答案是iops的问题,这是因为du命令来自-我想-cadvisor。从那时起,我已移至io1盒并具有稳定性,因此将其标记为已关闭,并将ec2实例类型的标记为分辨率
感谢您的帮助!