目录
问题描述
原因分析:
解决方案:
其他问题
问题描述
k8s部署时pod一直属于Pending状态,也就是说pod未调度到k8s节点上
原因分析:
通过以下命令查看下pod
kubectl get pod
以上命令可以看到各个pod的状态,接下来使用以下命令查看下pod的详细信息:
kubectl describe pod <pod-name>
假如你的pod名是pod-c999b475b-sm65k,那么命令就是:
kubectl describe pod pod-c999b475b-sm65k
通过这个命令可以查看到最底下的Events,我这里忘记截图了,我查看到的提示大概是说这个pod的污点零容忍度什么的。已经提到了污点了,我当时想的是原先这个k8s节点是可以正常部署的,怎么会突然就出现污点没法部署了呢?接着我就用以下命令查看了节点的污点:
kubectl describe node <node-name> | grep Taints
在输入该命令后我看到node.kubernetes.io/disk-pressure的污点信息,这个是当节点上空间不足的时候才会出现。
如果不知道自己的节点名,可以使用以下命令先查看下pod是部署在哪个节点上的:
kubectl describe pod <pod-name> | grep Node:
从上面的一步步排查下来可以确定是因为存储空间不足导致的,接下来我们就需要去对应的节点看下是因为什么导致存储空间不足的,因为这个节点上给了80G,也没有部署别的应用,就只有docker和k8s的服务,我很疑惑。。。就这两玩意能占用80G?
接下来我在节点上使用以下命令查看了磁盘的使用情况:
df -h
从图中可以看到docker的overlay占用很大,知道原因后就好办了。
解决方案:
我的解决方案是删除所有没有使用的docker资源(容器、镜像、网络、数据卷等等):
# 如果你只想清除未使用的容器、网络、卷以及悬空和未引用的镜像请使用这个命令
sudo docker system prune -f
# 如果你需要深度清理请使用这个命令(它会把所有为使用的镜像都删掉,生产环境请谨慎使用)
sudo docker system prune -a -f
效果:
执行命令后可以看出已经有足够的空间了,接下来pod也正常在该节点上部署了。
其他问题
如果你遇到和我一样的问题,跟我做了同样的操作还是无效的话请分别执行以下命令:
systemctl stop docker
systemctl start docker
不要直接restart !!!
👍点赞,你的认可是我创作的动力 !
🌟收藏,你的青睐是我努力的方向!
✏️评论,你的意见是我进步的财富!