共计 1284 个字符,预计需要花费 4 分钟才能阅读完成。
背景:
事件这样的:kubernetes1.21.3集群。容器运行时 containerd。除了K8s-node-06 节点。
保留这个 docker 节点有很多起因。比方过后没有想好用什么打包镜像。默认让 jenkins 打包 镜像。还有就是我的 gitlab 10.8.7 版本 contarinerd 运行时下无奈启动。就保留了这个节点运行 gitlab pod。当然了也把这个节点设置为了不可调度。不相其余利用调度到这个节点上来!最近一段时间 gitlab 利用频繁呈现 Evicted 的问题:
这样就陷入了一个死循环:我的 k8s-node-06 设置为了不可调度,而后 gitlab pod 异样了 从新调度也调度不到节点上来 …. 收到报错而后上线查找问题
解决问题过程:
1. 首先将 k8s-node-06 节点设置为可调度使 gitlab pod 失常运行
[root@k8s-master-01 ~]# kubectl uncordon k8s-node-06
node/k8s-node-06 uncordoned
期待 gitlab pod running 后 将 k8s-node-06 节点 复原不可调度
[root@k8s-master-01 ~]# kubectl get pods -n kube-ops
[root@k8s-master-01 ~]# kubectl cordon k8s-node-06
node/k8s-node-06 cordoned
[root@k8s-master-01 ~]# kubectl get nodes
2. describe Evicted pod 定位解决
[root@k8s-master-01 ~]# kubectl describe pods gitlab-84d4998c96-b6z2j -n kube-ops
注:pod 名词不统一 疏忽。只是举个例子
目测存储资源不够了?百度搜寻关键词:The node was low on resource: ephemeral-storage。参照:https://blog.csdn.net/u013355826/article/details/101020231。能够确定是存储资源有余了。登陆 k8s-node-06 节点通过查找文件发现 Anchore Enine 装置后,扫描后后数据文件太大造成的。就删除了 anchore Engine
中的扫描记录文件!察看一段事件后目测是失常了 ……
3. 如何批量删除 Evicted pod?
而后 pod 列表中还有好多 Evicted pod 看着恨不悦目,怎么批量删除呢?如下:
kubectl get pods --all-namespaces -o json | jq '.items[] | select(.status.reason!=null) | select(.status.reason | contains("Evicted")) |"kubectl delete pods \(.metadata.name) -n \(.metadata.namespace)"' | xargs -n 1 bash -c
总结:
- 做好资源的监控
- kubectl 命令的熟练掌握,高效使用
- 当然了最重要的还是解决问题的思路。先查看日志去定位问题!
正文完
发表至: kubernetes
2022-03-02