1 前言
我们在使用kubernetes
时可能会面临这样的场景:
- 有一个开发环境,想连接集群内的多节点服务,但这些服务的负载均衡是在客户端解决的(客户端需要知道所有节点的IP端口并分别连接,如Redis-Cluster),这样
NodePort
和Ingress
都不好使了,需要将开发机接入kubernetes
集群,但又不想开发机器上被分配Pod
。 - 有一个
Node
机器有点问题,想把它上面的Pod
转移走,等解决了再让他继续工作。 - 有一个
Node
机器快坏了,把它从集群中剔除吧。 在面临以上场景时,就需要知道如何操作kubernetes
的调度策略,达成目标了。
2 方法
可以使用以下三个命令来指定Node
停止调度:
命令 | 作用 | 对Node的影响 | 对Pod 的影响 |
---|---|---|---|
cordon | 停止调度,临时从集群隔离 | 状态标记为SchedulingDisabled | Node 中已有Pod 不受影响;再创建的Pod 不会调度到该Node 中 |
drain | 驱逐节点,先不可调度,再排干 | 状态标记为SchedulingDisabled | Node 中已有Pod 会在其他Node 中重新创建 |
delete | 删除节点 | 删除 | Node 中已有Pod 会在其他Node 中重新创建 |