【问题标题】:Kubernetes ALL workloads fail when deploying a single updateKubernetes ALL 工作负载在部署单个更新时失败
【发布时间】:2020-12-16 04:51:11
【问题描述】:

更新后端代码(将更新推送到 gcr.io)后,我删除了 pod。通常会启动一个新的 pod。

但是今天之后整个集群就崩溃了。我真的无法理解这里发生了什么(我没有接触任何其他项目)。

我真的在黑暗中寻找。我从哪里开始寻找?

我看到日志显示:

0/2 nodes are available: 2 node(s) had taints that the pod didn't tolerate.

当我查到这个时:

kubectl describe node | grep -i taint
Taints:             node.kubernetes.io/unreachable:NoSchedule
Taints:             node.kubernetes.io/unreachable:NoSchedule

但我不知道这是什么,也不知道他们是如何到达那里的。

编辑:

看起来我需要删除污点,但我无法(未找到污点?)

kubectl taint nodes --all node-role.kubernetes.io/unreachable-
taint "node-role.kubernetes.io/unreachable" not found
taint "node-role.kubernetes.io/unreachable" not found

【问题讨论】:

  • 节点好像有问题,所以标记为“NoSchedule”,需要排查节点问题。
  • 是的,我是这么想的,但我没有发现任何问题。
  • 您能否与我们分享您用于此集群和节点池的 GKE 版本,以及,您能否分享避免共享 PII 的节点的完整描述?

标签: kubernetes google-kubernetes-engine


【解决方案1】:

节点可能存在问题。使用其中一些进行调试(示例):

$ kubectl get nodes
NAME         STATUS     ROLES    AGE   VERSION
k8s-master   Ready      master    1d    v1.14.2
k8s-node1    NotReady   <none>    1d    v1.14.2
k8s-node2    NotReady   <none>    1d    v1.14.2 <-- Does it say NotReady?
$ kubectl describe node k8s-node1
...
 # Do you see something like this? What's the event message?
 MemoryPressure...
 DiskPressure...
 PIDPressure...

检查 kubelet 是否在每个节点上运行(它可能会崩溃并重新启动)

ssh k8s-node1
# ps -Af | grep kubelet
# systemctl status kubelet
# journalctl -xeu kubelet

核选项:

如果您使用的是 node pool,请删除您的节点并让自动缩放器重新启动全新的节点。

Related question/answer.

✌️

【讨论】:

  • 其实我觉得大概是这样。我重新创建了一个节点池并删除了旧的。突然间,整个 Google Kubernetes 界面变得更快了,一切都神奇地再次运行。叹。是的,它确实说 NotReady。
猜你喜欢
  • 1970-01-01
  • 2020-01-10
  • 2021-12-21
  • 1970-01-01
  • 1970-01-01
  • 2021-10-15
  • 1970-01-01
  • 2019-06-16
  • 2020-08-03
相关资源
最近更新 更多