Kubernetes Pod被驱逐原因详解(2)
Kubernetes
可以看到结果,旧Pod被驱逐,而新Pod被创建,在这里实验环境节点较少,所以体现为没有更换节点
$ kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
netbox-85865d5556-hfg6v 1/1 Terminating 0 101d 192.168.1.213 master-machine <none> <none>
netbox-85865d5556-vlgr4 1/1 Running 0 101d 192.168.0.4 node01 <none> <none>
netbox-85865d5556-z6vqx 1/1 Running 0 11s 192.168.1.220 master-machine <none> <none>
通过API驱逐返回状态
- 200 OK|201 Success:允许驱逐,Eviction 类似于向Pod URL发送 DELETE 请求
- 429 Too Many Requests:由于API限速可能会看到该相应,另外也为配置原因,不允许驱逐 poddisruptionbudget (PDB是一种保护机制,将总是确保一定数量或百分比的Pod 被自愿驱逐)
- 500 Internal Server Error:不允许驱逐,存在错误配置,如多个PDB引用一个 Pod
排出Node上的Pod
drain是kubernetes 1.5+之后提供给用户维护命令,通过这个命令 (kubectl drain <node_name>) 可以驱逐该节点上运行的所有Pod,已用来对节点主机进行操作(如内核升级,重启)
Notes:kubectl drain <node_name>一次只能接一个nodename [6]
污点驱逐
污点通常与容忍度同时使用,拥有污点的node,Pod将不会被调度至该节点,而容忍度将允许一定的污点来调度 pod。
在Kubernetes 1.18+后,允许基于污点的驱逐机制,即kubelet在某些情况下会自动添加节点从而进行驱逐:
Kubernetes内置了一些污点,此时 Controller 会自动污染节点:
- node.kubernetes.io/not-ready: Node故障。对应 NodeCondition 的Ready = False。
- node.kubernetes.io/unreachable:Node控制器无法访问节点。对应 NodeCondition Ready= Unknown。
- node.kubernetes.io/memory-pressure:Node内存压力。
- node.kubernetes.io/disk-pressure:Node磁盘压力。
- node.kubernetes.io/pid-pressure:Node有PID压力。
- node.kubernetes.io/network-unavailable:Node网络不可用。
- node.kubernetes.io/unschedulable:Node不可调度。
以上就是Kubernetes 跟 Pod被驱逐原因详解的具体内容,供大家参考操作。
相关阅读
-
什么是K8s Kubernetes是什么
小编为大家说一说什么是K8s的相关介绍,具体详情如下: Kubernetes 是一个开源的容器编排引擎,用来对容器化应用进行自动化部署、 扩缩和管理。 该项目托管在 CNCF。 Kubernetes 提供了部署容器
-
Git基础入门教程:从零开始掌握版本控制
你是不是想知道Git基础入门教程方面的介绍,一起来了解了解吧。 Git是一个分布式版本控制系统,它在软件开发中被广泛应用,用于跟踪和管理代码的版本更改。 无论你是开发人员,还是想学
-
简单网页制作模板代码 web网页制作代码了解
IT袋网为大家说一说简单网页制作模板代码和web网页制作代码了解方面的讲解,一起来了解了解吧。 想要制作一个网站,但不能编写代码吗?还是你找不到网页模板代码?在这种情况下,你会
-
InnoDB的一次更新事务是怎么实现的?
跟大家聊一聊InnoDB的一次更新事务是怎么实现的方面的介绍,相关内容具体如下: InnoDB的一次更新事务涉及到多个组件和步骤,包括Buffer Pool、BinLog、UndoLog、RedoLog以及物理磁盘。 下面是一次


