微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Kubernetes节点资源耗尽,导致Nodes节点状态NotReady

 

今天发现私有云上的Kubernetes cluster中的一个node似乎不工作了,连带的的应用也挂掉了,并且长时间没有恢复。在kubernetes上创建POD时,有个节点一直不能分配到POD,并且该节点上有些pod的状态为Pending。

 

首先,我查看集群中的所有Pods状态,发现node1和node3上的Pods均正常(running状态),但位于node2上的Pods均为“Pending”状态,显然node2节点出问题了。此时来查看nodes状态发现node2是异常的NotReady状态。

#查看pod状态

kubectl get pod -A -o wide

# 查看节点

kubectl get nodes

#kubectl get nodes 

NAME           STATUS   ROLES         AGE     VERSION
k8s-node1   Ready    master,node   7d18h   v1.20.6
k8s-node2   NotReady    master,node   7d18h   v1.20.6
k8s-node3   Ready    master,node   7d18h   v1.20.6

 

 如果你此刻去尝试查看(kubectl describe) 这几个pod的状态,多半你会失败,因为Pod在频繁重启,1-2s钟新创建的Pod就会被kill掉,导致你无法查看其状态。

我直接查看一下node2的状态,果不其然,我得到了一些Warning events信息:

#查询node2节点的状态

kubectl describe node k8s-node2

# kubectl describe node k8s-node2
... ...
Events:
  FirstSeen    LastSeen    Count    From            SubObjectPath    Type        Reason            Message
  ---------    --------    -----    ----            -------------    --------    ------            -------
  5m        5m        1    kubelet, k8s-node2            normal        Starting        Starting kubelet.
  5m        5m        2    kubelet, k8s-node2            normal        NodeHasSufficientdisk    Node k8s-node2 status is Now: NodeHasSufficientdisk
  5m        5m        2    kubelet, k8s-node2            normal        NodeHasSufficientMemory    Node k8s-node2 status is Now: NodeHasSufficientMemory
  5m        5m        2    kubelet, k8s-node2            normal        NodeHasNodiskPressure    Node k8s-node2 status is Now: NodeHasNodiskPressure
  5m        5m        1    kubelet, k8s-node2            normal        NodeAllocatableEnforced    Updated Node Allocatable limit across pods
  5m        5m        1    kubelet, k8s-node2            normal        NodeHasdiskPressure    Node k8s-node2 status is Now: NodeHasdiskPressure
  5m        14s      23    kubelet, k8s-node2            Warning        evictionThresholdMet    Attempting to reclaim nodefs

 从状态可以看到有以下异常的信息:

status is Now: NodeHasSufficientdisk
status is Now: NodeHasSufficientMemory

status is Now: NodeHasNodiskPressure

 

1) NodeHasSufficientdisk:表示这个节点没有空闲的磁盘空间了,已经不能在上面创建POD了。

2) NodeHasSufficientMemory:表示这个节点上可用内存已经很少了。
3) NodeHasNodiskPressure:表示这个节点上可用磁盘空间已经很少了。

 

既然提到了磁盘不足,我们就来看看磁盘占用情况:

# df -h

文件系统        容量  已用  可用 已用% 挂载点
udev            2.0G     0  2.0G    0% /dev
tmpfs           396M   46M  350M   12% /run
/dev/sda1       5.8G  5.1G  448M   97% /var
tmpfs           2.0G  288K  2.0G    1% /dev/shm
/dev/sdb1        99G  5.2G   89G    6% /data
tmpfs           396M     0  396M    0% /run/user/0
... ...

 

因此,进入node2节点 检查磁盘使用率,发现/var/lib/docker所在的分区,已经使用了97%.

删除/var/lib/docker 所在分区的一些临时文件后或把该目录挂载到一较大的分区后,重启kebelet后问题解决

#重启kubelet

systemctl restart kubelet
systemctl status kubelet

 

 

、、

 

https://tonybai.com/2017/10/16/out-of-node-resource-handling-in-kubernetes-cluster/

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐