Skip to Content
节点管理节点常见问题

Node 常见故障处理

节点作为承载工作负载的实体,是 Kubernetes 一个非常重要的对象,在实际运营过程中,节点会出现各种问题,本文简要描述下节点的各种异常状态及排查思路。

1. 节点状态说明

节点情况说明处理办法
ReadyTrue 表示节点是健康的,False 表示节点不健康,Unkown 表示节点失联
DiskPressureTrue 表示节点磁盘容量紧张,False 反之
MemoryPressureTrue 表示节点内存使用率过高,False 反之
PIDPressureTrue 表示节点有太多进程在运行,False 反之
NetworkUnavailableTrue 表示节点网络配置不正常,False 反之

2. 节点常用命令

  1. 查看节点状态
kubectl get nodes
  1. 查看节点事件
kubectl describe node ${NODE_NAME}

在上述两个命令看不出端倪的时候,还可以借助Linux的相关命令来辅助判断,这个时候我们就需要登录节点,通过linux相关命令来检查节点状态。

  1. 检查节点联通性

    3.1 网络检查: 我们可以从集群的Master节点,使用 Ping 命令去检查该节点的网络是否可达; 3.2 健康检查: 登录安联云控制台,从云主机页面查看该节点是否处于Running状态,包括查看CPU、内存使用率,确认节点是否处于高负载;

3. K8S 组件故障检查

UK8S 集群默认为 3 台 Master 节点,K8S 核心组件在 3 台 Master 节点均有部署,通过负载均衡对外提供服务。如发现组件异常,请登录相应的 Master 节点(无法定位时逐台登录 Master 节点),并通过以下命令来查看节点中组件状态是否正常、错误原因是什么,及对异常组件进行重启:

systemctl status ${PLUGIN_NAME} journalctl -u ${PLUGIN_NAME} systemctl restart ${PLUGIN_NAME}

UK8S 核心组件及名称:

组件组件名称
Kubeletkubelet
API Serverkube-apiserver
Controller Managerkube-controller-manager
Etcdetcd
Schedulerkube-scheduler
KubeProxykube-proxy

例如,查看 APIServer 组件状态,需要执行 systemctl status kube-apiserver

4. UK8S 页面概览页一直刷新不出来?

  1. api-server 对应的 ulb4 是否被删除(uk8s-xxxxxx-master-ulb4
  2. UK8S 集群的三台 master 主机是否被删了或者关机等
  3. 登陆到 UK8S 三台 master 节点,检查 etcd 和 kube-apiserver 服务是否正常,如果异常,尝试重启服务
  • 3.1 systemctl status etcd  / systemctl restart etcd 如果单个 etcd 重启失败,请尝试三台节点的 etcd 同时重启
  • 3.2 systemctl status kube-apiserver  / systemctl restart kube-apiserver

5. UK8S 节点 NotReady 了怎么办

  1. kubectl describe node node-name 查看节点 notReady 的原因,也可以直接在 console 页面上查看节点详情。
  2. 如果可以登陆节点,journalctl -u kubelet 查看 kubelet 的日志, system status kubelet查看 kubelet 工作是否正常。
  3. 对于节点已经登陆不了的情况,如果希望快速恢复可以在控制台找到对应主机断电重启。
  4. 查看主机监控,或登陆主机执行sar命令,如果发现磁盘 cpu 和磁盘使用率突然上涨, 且内存使用率也高,一般情况下是内存 oom 导致的。关于内存占用过高导致节点宕机,由于内存占用过高,磁盘缓存量很少,会导致磁盘读写频繁,进一步增加系统负载,打高cpu的恶性循环
  5. 内存 oom 的情况需要客户自查是进程的内存情况,k8s 建议 request 和 limit 设置的值不宜相差过大,如果相差较大,比较容易导致节点宕机。
  6. 如果对节点 notready 原因有疑问,请按照UK8S人工支持联系人工支持