【发布时间】:2020-06-03 09:11:06
【问题描述】:
我有一个使用 kubespray 的 k8s 集群设置。
上周我的一个 k8s 节点的存储空间非常低,所以所有的 pod 都被驱逐了,包括一些重要的 pod,例如 calico-node、kube-proxy(我认为这些 pod 很关键,无论如何都不会被驱逐)
之后所有的calico-node pod都没有准备好,当我查看日志时,说:
Warning: Readiness probe failed: calico/node is not ready: BIRD is not ready: BGP not established with 192.168.0.xxx,其中192.168.0.xxx是上述问题节点的IP。
我的问题是如何恢复该节点?再次运行 kubespray 的 cluster.yml 是否安全?
我的k8s版本是v1.13.3
谢谢。
【问题讨论】:
-
kubelet 是否正在运行并向 Kube api-server 发布状态?
-
kubelet 正在运行,但无法连接到 api-server,因为该节点上的 kube-proxy 没有运行
-
Kube-proxy 是一个静态 Pod。它不作为部署/守护程序等运行。它由 kubelet 直接管理。所以检查清单文件夹(默认 /etc/kubernetes/manifests)以确保 kube-proxy-XXX.yaml 存在。无论如何,kubelet 是主要的节点代理,直接与 api-server 通信。它不需要 kube-proxy 将状态发布到 Api-server。你能发布 kubelet 日志吗?
-
谢谢,我会再检查一遍
-
kube-proxy 不是静态 Pod。它是 kubeadm 在初始化阶段安装的守护程序集,如 coredns。您可以使用命令阅读详细信息:
kubeadm init phase addon kube-proxy --helpBTW,kubespray 也使用 kubeadm 来初始化 Kubernetes 集群,因此它的工作方式完全相同。 github.com/kubernetes-sigs/kubespray/blob/…
标签: kubernetes kubespray