首页 > 解决方案 > k8s master 进入 Not Ready 状态

问题描述

我已经在 master 上重新启动了 kubelet,之后 k8s master 进入了“未就绪”状态。请在 describe 中找到以下事件。

Conditions:
  Type                 Status    LastHeartbeatTime                 LastTransitionTime                Reason              Message
  ----                 ------    -----------------                 ------------------                ------              -------
  NetworkUnavailable   False     Fri, 23 Oct 2020 12:51:36 +0530   Fri, 23 Oct 2020 12:51:36 +0530   FlannelIsUp         Flannel is running on this node
  MemoryPressure       Unknown   Wed, 04 Nov 2020 11:30:18 +0530   Wed, 04 Nov 2020 11:34:50 +0530   NodeStatusUnknown   Kubelet stopped posting node status.
  DiskPressure         Unknown   Wed, 04 Nov 2020 11:30:18 +0530   Wed, 04 Nov 2020 11:34:50 +0530   NodeStatusUnknown   Kubelet stopped posting node status.
  PIDPressure          Unknown   Wed, 04 Nov 2020 11:30:18 +0530   Wed, 04 Nov 2020 11:34:50 +0530   NodeStatusUnknown   Kubelet stopped posting node status.
  Ready                Unknown   Wed, 04 Nov 2020 11:30:18 +0530   Wed, 04 Nov 2020 11:34:50 +0530   NodeStatusUnknown   Kubelet stopped posting node status.

我该如何解决这个问题。

标签: kubernetesmasterkubeletflannelcoredns

解决方案


这里有几样东西可以看。

  1. 如果您可以检查 kubelet 日志(正如 Arghya 在他的评论中所建议的那样),那将是最好的。您可以 ping 节点 IP 以查看它是否已启动。如果它已启动,您可以通过 SSH 连接到节点并使用以下命令检查 kubelet 日志:

# journalctl -u kubelet

  1. Out of Memorykubelet 主机上可能出现错误。可以通过添加适当的--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%"

  1. 这里解释了一个问题:

kubelet 有时无法修补其节点状态,因为超过 250 个资源留在节点上,kubelet 无法同时使用 kube-apiserver 观看超过 250 个流。所以,我只是将 kube-apiserver --http2-max-streams-per-connection 调整为 1000 以减轻痛苦。

  1. 如果节点无响应(无法 ssh 进入),您可以尝试重新启动节点以清除Not Ready状态。

推荐阅读