Kubernetes 由于资源压力,在清除节点后恢复节点
我有一个使用kubespray的k8s群集设置 上周,我的一个k8s节点的存储空间非常低,因此所有的POD都已被逐出,包括一些重要的POD,如calico节点、kube代理(我认为这些POD非常重要,无论发生什么情况,都从未被逐出) 之后所有的印花布节点吊舱都没有准备好,当我查看日志时,据说:Kubernetes 由于资源压力,在清除节点后恢复节点,kubernetes,kubespray,Kubernetes,Kubespray,我有一个使用kubespray的k8s群集设置 上周,我的一个k8s节点的存储空间非常低,因此所有的POD都已被逐出,包括一些重要的POD,如calico节点、kube代理(我认为这些POD非常重要,无论发生什么情况,都从未被逐出) 之后所有的印花布节点吊舱都没有准备好,当我查看日志时,据说: 警告:就绪探测失败:印花布/节点未就绪:BIRD未就绪:未使用192.168.0.xxx建立BGP,其中192.168.0.xxx是上述问题节点的IP 我的问题是如何恢复该节点?再次运行kubespray
警告:就绪探测失败:印花布/节点未就绪:BIRD未就绪:未使用192.168.0.xxx建立BGP
,其中192.168.0.xxx
是上述问题节点的IP
我的问题是如何恢复该节点?再次运行kubespray's cluster.yml安全吗
我的k8s版本是v1.13.3
谢谢。当节点有磁盘压力时,其状态更改为
NotReady
,并向节点添加污点:污点:node.kubernetes.io/磁盘压力:NoSchedule
此节点上运行的所有pod都将被逐出,api服务器、kube控制器和kube调度程序除外-逐出管理器将保存这些pod,使其不会被逐出,并显示错误消息:无法逐出关键的静态pod[…]
一旦节点从磁盘压力中释放出来,它就会将其状态更改为Ready
,之前添加的污点将被删除。您可以通过运行kubectl descripe node
来检查它。在条件字段中,您应该看到DiskPressure
已将状态更改为False
,这意味着节点有足够的可用空间。类似的信息也可以在事件
字段中找到
Normal NodeReady 1s kubelet, node1 Node node1 status is now: NodeReady
Normal NodeHasNoDiskPressure 1s (x2 over 1s) kubelet, node1 Node node1 status is now: NodeHasNoDiskPressure
确认节点具有足够的磁盘空间后,您可以重新启动
kubelet
并运行kubespray的cluster.yml-将在节点上重新部署POD。您只需确保节点已准备好处理部署 kubelet是否正在运行并将状态发布到Kube api服务器?kubelet正在运行,但无法连接到api服务器,因为该节点上的Kube代理未运行Kube代理是一个静态pod。它不作为部署/守护程序等运行。它由kubelet直接管理。因此,请检查manifests文件夹(默认/etc/kubernetes/manifests),以确保kube-proxy-XXX.yaml存在。无论如何,kubelet是主节点代理,直接与api服务器通信。它不需要kube代理将状态发布到Api服务器。你能发布kubelet日志吗?谢谢,我会检查AgainCube代理不是静态pod。它是kubeadm在初始化阶段安装的守护程序,就像coredns一样。您可以使用以下命令阅读详细信息:kubeadm init phase addon kube proxy--help
BTW,kubespray还使用kubeadm初始化Kubernetes集群,因此其工作方式完全相同。