我正在听一些建议。
我们有一个在AWS上运行的Kubernetes(1.8.x)集群,使用KOPS进行了设置。 1个主节点和2个节点。
在周末,我们一半的 pod 消失了,并拒绝启动。部署仍然存在,但Pod无法运行。我尝试终止AWS中的节点,并自动将它们替换为Kubernetes,但仍未恢复Pod。
这是一个生产应用程序,因此将其放置约8个小时以自行恢复(不是)后,我使用KOPS删除了集群,并使用更新版本的Kubernetes成功地重新创建了整个集群。
整个体验令人不安,尤其是在我无法找出集群出什么问题的时候。
我需要以下帮助:
非常感谢您的所有回复。
最佳答案
What could/should I have checked in order to diagnose the issue?
journalctl -u kubelet.service
和/或docker logs --tail=150 ${anything_that_talks_to_the_apiserver}
查找错误消息。根据您对x509证书到期的经验,我猜整个集群将充斥着错误消息也很有可能是,因为固定期限后
NotReady
无法通过apiserver checkin ,因此您的节点变成了kubelet
。如果您使用的是与apiserver通信的SDN,例如某些法兰绒设置或某些calico设置,则Pod网络连接也将开始失败,这是集群的大屠杀What could have conceivably caused the issue in the first place? I realise it's impossible to pinpoint it now, but please feel free to conjecture.
证书始终为,其有效期包括开始时间和结束时间;结束时间可能非常长-10年,100年,无论如何,但是确实存在,并且当该时间过去时,证书现在无效,并且任何进行证书验证的人都会拒绝使用它。
How can I mitigate the future risk of this happening?
实际上,您可以通过多种方法来监视系统中重要证书的证书到期,包括方便使用的prometheus exporter returning
probe_ssl_earliest_cert_expiry
,您可以根据该指标设置警报。现代的Kubernetes(1.8除外)允许集群旋转其自己的证书,从概念上讲完全避开了这一混乱局面。
关于amazon-ec2 - Kubernetes中断, pod 刚刚消失,拒绝启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55519136/