kubernetes - 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.
我该如何解决这个问题。
解决方案
这里有几样东西可以看。
- 如果您可以检查 kubelet 日志(正如 Arghya 在他的评论中所建议的那样),那将是最好的。您可以 ping 节点 IP 以查看它是否已启动。如果它已启动,您可以通过 SSH 连接到节点并使用以下命令检查 kubelet 日志:
# journalctl -u kubelet
Out of Memory
kubelet 主机上可能出现错误。可以通过添加适当的--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%"
- 这里解释了一个问题:
kubelet 有时无法修补其节点状态,因为超过 250 个资源留在节点上,kubelet 无法同时使用 kube-apiserver 观看超过 250 个流。所以,我只是将 kube-apiserver --http2-max-streams-per-connection 调整为 1000 以减轻痛苦。
- 如果节点无响应(无法 ssh 进入),您可以尝试重新启动节点以清除
Not Ready
状态。
推荐阅读
- ios - 使用 Capacitor 在 ios 上进行深度链接 - “错误没有具有域权利的应用程序”
- python - 不同容器外壳上的 Python 子进程
- angular - Angular11芯片防止用户输入错误值
- autodesk-forge - Autodesk Forge - 查看器(标记扩展)屏幕截图在 iOS 上恢复
- node.js - 如何在与 localhost 不同的主机中启动 node express 应用程序
- vba - 首次使用 Outlook VBA 后,工作事件代码不再触发
- python - ThreadPoolExecutor 不会在最后一个线程完成之前启动一个新线程
- swift - SWIFT:线程 1:致命错误:索引超出范围
- tizen - Tizen Socket.io 连接仅适用于 5.0
- ruby - ruby:如何从字符串中删除数字之前的字符串“\n”?