Kubernetes中断,豆荚刚刚消失,拒绝启动

时间:2019-04-04 14:58:34

标签: amazon-ec2 kubernetes kops

我正在听一些建议。

我们在AWS上运行了一个Kubernetes(1.8.x)集群,并使用KOPS进行了设置。 1个主节点和2个节点。

在周末,我们一半的豆荚消失了,并拒绝启动。部署仍然存在,但Pod无法运行。我尝试终止AWS中的节点,并自动将它们替换为Kubernetes,但仍未恢复Pod。

这是一个生产应用程序,因此,将其放置约8个小时以自行恢复(不是)后,我使用KOPS删除了集群,并使用更新版本的Kubernetes成功地重新创建了整个组件。

整个体验非常令人不安,特别是因为我无法找出集群的问题所在。

我需要以下帮助:

  1. 我可以/应该检查什么以诊断问题?
  2. 首先可以想到是什么引起了该问题?我意识到现在无法精确定位,但请随时进行推测。
  3. 如何减轻这种情况的未来风险?

非常感谢您的答复。

1 个答案:

答案 0 :(得分:0)

  

我可以/应该检查什么以诊断问题?

journalctl -u kubelet.service和/或docker logs --tail=150 ${anything_that_talks_to_the_apiserver}查找错误消息。根据您对x509证书到期的经验,我猜整个集群将充斥着错误消息

很有可能您的节点进入NotReady,因为kubelet在固定期限后无法通过apiserver签入。如果您使用的是与apiserver通信的SDN,例如某些法兰绒设置或某些calico设置,那么Pod网络连接也将开始失败,这是集群的大屠杀。

  

首先可以想到是什么引起了该问题?我意识到现在无法精确定位,但请随时进行推测。

证书始终具有有效期,其中包括开始时间和结束时间;结束时间可能非常长-10年,100年,无论如何,但是确实存在,并且当该时间过去时,证书现在无效,任何进行证书验证的人都将拒绝使用它。

  

如何减轻这种情况的未来风险?

实际上,您可以通过多种方法来监视系统中重要证书的证书到期,其中包括方便使用的prometheus exporter returning probe_ssl_earliest_cert_expiry,您可以根据该指标设置警报。现代kubernetes(1.8除外)允许集群旋转其 own 证书,从概念上讲完全避开了这一混乱局面。