Kubernetes 中断,pods 刚刚消失,拒绝启动
Kubernetes outage, pods just vanished, refused to start
我正在寻求一些建议。
我们在 AWS 上有一个 Kubernetes (1.8.x) 集群 运行ning,使用 KOPS 设置。 1 个主节点和 2 个节点。
整个周末,我们 pods 的一半人消失了并且拒绝开始。部署仍然存在,但 pods 不会 运行。我尝试终止 AWS 中的节点,它们被 Kubernetes 自动替换,但 pods 仍然没有恢复。
这是一个生产应用程序,因此在让它自行恢复大约 8 小时后(它没有),我使用 KOPS 删除了集群,并使用更新版本的 Kubernetes 成功地重新创建了整个集群。
整个经历非常麻烦,尤其是我无法找出集群出了什么问题。
我需要以下方面的帮助:
- 为了诊断问题,我检查了什么could/should?
- 最初可能是什么导致了这个问题?我知道现在无法确定,但请随意猜测。
- 我怎样才能降低未来发生这种情况的风险?
非常感谢所有回复。
What could/should I have checked in order to diagnose the issue?
journalctl -u kubelet.service
and/or docker logs --tail=150 ${anything_that_talks_to_the_apiserver}
查找错误消息。根据您对 x509 证书到期的经验,我猜想整个集群都会充斥着错误消息
您的节点也 很可能 NotReady
因为 kubelet
在固定的持续时间后未能与 apiserver 签入。如果你使用的是与 apiserver 通信的 SDN,例如一些 flannel 设置或一些 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 不是 —— 允许集群轮换其 自己的 证书,从概念上完全避免了这种混乱。
我正在寻求一些建议。
我们在 AWS 上有一个 Kubernetes (1.8.x) 集群 运行ning,使用 KOPS 设置。 1 个主节点和 2 个节点。
整个周末,我们 pods 的一半人消失了并且拒绝开始。部署仍然存在,但 pods 不会 运行。我尝试终止 AWS 中的节点,它们被 Kubernetes 自动替换,但 pods 仍然没有恢复。
这是一个生产应用程序,因此在让它自行恢复大约 8 小时后(它没有),我使用 KOPS 删除了集群,并使用更新版本的 Kubernetes 成功地重新创建了整个集群。
整个经历非常麻烦,尤其是我无法找出集群出了什么问题。
我需要以下方面的帮助:
- 为了诊断问题,我检查了什么could/should?
- 最初可能是什么导致了这个问题?我知道现在无法确定,但请随意猜测。
- 我怎样才能降低未来发生这种情况的风险?
非常感谢所有回复。
What could/should I have checked in order to diagnose the issue?
journalctl -u kubelet.service
and/or docker logs --tail=150 ${anything_that_talks_to_the_apiserver}
查找错误消息。根据您对 x509 证书到期的经验,我猜想整个集群都会充斥着错误消息
您的节点也 很可能 NotReady
因为 kubelet
在固定的持续时间后未能与 apiserver 签入。如果你使用的是与 apiserver 通信的 SDN,例如一些 flannel 设置或一些 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 不是 —— 允许集群轮换其 自己的 证书,从概念上完全避免了这种混乱。