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中重新创建 |