Eviction,即驱逐的意思,意思是当节点出现异常时,为了保证工作负载的可用性,kubernetes将有相应的机制驱逐该节点上的Pod。
目前kubernetes中存在两种eviction机制,分别由kube-controller-manager和kubelet实现。
kube-controller-manager主要由多个控制器构成,而eviction的功能主要由node controller这个控制器实现。该Eviction会周期性检查所有节点状态,当节点处于NotReady状态超过一段时间后,驱逐该节点上所有pod。
kube-controller-manager提供了以下启动参数控制eviction:
如果节点处于资源压力,那么kubelet就会执行驱逐策略。驱逐会考虑Pod的优先级,资源使用和资源申请。当优先级相同时,资源使用/资源申请最大的Pod会被首先驱逐。
kube-controller-manager的eviction机制是粗粒度的,即驱赶一个节点上的所有pod,而kubelet则是细粒度的,它驱赶的是节点上的某些Pod,驱赶哪些Pod与Pod的Qos机制有关。该Eviction会周期性检查本节点内存、磁盘等资源,当资源不足时,按照优先级驱逐部分pod。
驱逐阈值分为软驱逐阈值(Soft Eviction Thresholds)和强制驱逐(Hard Eviction Thresholds)两种机制,如下:
kubelet提供了以下参数控制eviction:
若节点故障时,实例未被驱逐,请先按照如下方法进行问题定位。
使用如下命令发现很多pod的状态为Evicted:
kubectl get pods
cat /var/paas/sys/log/kubernetes/kubelet.log | grep -i Evicted -C3
以下排查思路根据原因的出现概率进行排序,建议您从高频率原因往低频率原因排查,从而帮助您快速找到问题的原因。
如果解决完某个可能原因仍未解决问题,请继续排查其他可能原因。
通过kubectl工具或单击对应工作负载后的“更多 > 查看YAML”,检查工作负载上是不是打上了tolerations,具体请参见https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/。
若属于小规格的集群(集群节点数小于50个节点),如果故障的节点大于总节点数的55%,实例的驱逐将会被暂停。此情况下k8s将部署尝试驱逐故障节点的工作负载,具体请参见https://kubernetes.io/docs/concepts/architecture/nodes/。
容器被驱逐后还会频繁调度到原节点。
问题原因:
节点驱逐容器是根据节点的“资源使用率”进行判断;容器的调度规则是根据节点上的“资源分配量”进行判断。由于判断标准不同,所以可能会出现被驱逐后又再次被调度到原节点的情况。
解决方案:
遇到此类问题时,请合理分配各容器的资源分配量即可解决。
工作负载实例出现不断失败,不断重新部署的情况。
问题分析:
pod驱逐后,如果新调度到的节点也有驱逐情况,就会再次被驱逐;甚至出现pod不断被驱逐的情况。
如果是由kube-controller-manager触发的驱逐,会留下一个状态为Terminating的pod;直到容器所在节点状态恢复后,pod才会自动删除。如果节点已经删除或者其他原因导致的无法恢复,可以使用“强制删除”删除pod。
如果是由kubelet触发的驱逐,会留下一个状态为Evicted的pod,此pod只是方便后期定位的记录,可以直接删除。
解决方案:
使用如下命令删除旧驱赶的遗留:
kubectl get pods | grep Evicted | awk '{print $1}' | xargs kubectl delete pod
如果上述方法均不能解决您的疑问,请提交工单寻求更多帮助。
腾讯云大学为广大用户提供了多种类型的视频教程,为服务开发者提供了专业的云技...
开源代码托管平台 GitHub 在本周宣布了一系列更新,不过最让熬夜写代码的开发者...
您可以通过Header中的X-Forwarded-For或者Cdn-Src-Ip字段来获取终端用户的IP地址...
线程?Thread?/?进程?Process 进程 一个正在运行的程序进程间内存不共享 通过进程...
无论如何,世界已阻挡不了大数据进军传统行业的步伐。现在,国内某证券公司声称...
TOP云 (west.cn)12月15日消息,近日闲置奢侈品交易平台“心上”已完成数千万美...
1.刷牙是件悲喜交加的事:一手拿著杯具,一手拿著洗具 2.扔硬币,正面去上网,...
1. 接口描述 接口请求域名: lighthouse.tencentcloudapi.com 。 本接口(Create...
前不久微信上线了拍一拍功能,刚推出就被有才的网友玩坏了。 还有更多没有节操的...
本文介绍如何通过阿里云CLI调用DescribeSnapshots API查询一台ECS实例或一块云盘...