首页 > 解决方案 > 资源压力清除后恢复节点

问题描述

我有一个使用 kubespray 的 k8s 集群设置。

上周我的一个 k8s 节点的存储空间非常低,所以所有的 pod 都被驱逐了,包括一些重要的 pod,比如 calico-node、kube-proxy(我认为这些 pod 很关键,无论如何都不会被驱逐)

之后所有的calico-node pods都没有准备好,当我查看日志时,说: ,上面有问题的节点的IP在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

我的问题是如何恢复该节点?再次运行 kubespray 的 cluster.yml 是否安全?

我的k8s版本是v1.13.3

谢谢。

标签: kuberneteskubespray

解决方案


当节点有磁盘压力时,其状态更改为NotReady,并且向节点添加了一个污点:Taints: node.kubernetes.io/disk-pressure:NoSchedule

此节点上运行的所有 pod 都将被逐出,除了api-server, kube-controller and kube-scheduler- 逐出管理器将保存这些 pod 以免被逐出并显示错误消息:cannot evict a critical static pod [...]

一旦节点从磁盘压力中释放出来,它将改变其状态,Ready并且先前添加的污点将被删除。您可以通过运行来检查它kubectl describe node <node_name>。在条件字段中,您应该看到DiskPressure状态已更改为False这意味着节点有足够的可用空间。类似的信息也可以在Events现场找到。

  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 将重新部署在节点上。您只需确保该节点已准备好处理部署。


推荐阅读