这三个命令是正式release的1.2新加入的命令,三个命令一起介绍,是因为三个命令配合使用可以实现节点的维护。在1.2之前,因为没有相应的命令支持,如果要维护一个节点,只能stop该节点上的kubelet将该节点退出集群,是集群不在将新的pod调度到该节点上。如果该节点上本生就没有pod在运行,则不会对业务有任何影响。如果该节点上有pod正在运行,kubelet停止后,master会发现该节点不可达,而将该节点标记为notReady状态,不会将新的节点调度到该节点上。同时,会在其他节点上创建新的pod替换该节点上的pod。这种方式虽然能够保证集群的健壮性,但是任然有些暴力,如果业务只有一个副本,而且该副本正好运行在被维护节点上的话,可能仍然会造成业务的短暂中断。

1.2中新加入的这3个命令可以保证维护节点时,平滑的将被维护节点上的业务迁移到其他节点上,保证业务不受影响。

如下图所示是一个整个的节点维护的流程(为了方便demo增加了一些查看节点信息的操作):

1)首先查看当前集群所有节点状态,可以看到共两个节点都处于ready状态;

[root@master run]# kubectl get nodes
NAME                   STATUS    AGE
node1-192.168.52.132   Ready     1d
node2-192.168.52.130   Ready     1d

2)查看当前tomcat两个副本运行在node1两个节点上;

[root@master run]# kubectl get pod -o wide
NAME           READY     STATUS    RESTARTS   AGE       IP            NODE
tomcat-kl9pc   1/1       Running   0          2m        172.17.82.3   node1-192.168.52.132
tomcat-l9hlp   1/1       Running   0          2m        172.17.82.2   node1-192.168.52.132

3)使用cordon命令将node1标记为不可调度;

[root@master run]# kubectl cordon node1-192.168.52.132
NAME                   STATUS                     AGE
node1-192.168.52.132   Ready,SchedulingDisabled   1d
node2-192.168.52.130   Ready                      1d

4)再使用kubectl get nodes查看节点状态,发现node1虽然还处于Ready状态,但是同时还被禁能了调度,这意味着新的pod将不会被调度到node1上。

5)再查看tomcat状态,没有任何变化,两个副本仍运行在node1上;

[root@master run]# kubectl get pod -o wide
NAME           READY     STATUS    RESTARTS   AGE       IP            NODE
tomcat-kl9pc   1/1       Running   0          2m        172.17.82.3   node1-192.168.52.132
tomcat-l9hlp   1/1       Running   0          2m        172.17.82.2   node1-192.168.52.132

6)执行drain命令,将运行在node1上运行的pod平滑的赶到其他节点上;

[root@master run]# kubectl drain node1-192.168.52.132
node "node1-192.168.52.132" cordoned
pod "tomcat-l9hlp" evicted
pod "tomcat-kl9pc" evicted
node "node1-192.168.52.132" drained

7)再查看tomcat的状态发现,node1上的副本已经被迁移到node2上;这时候就可以对node1进行一些节点维护的操作,如升级内核,升级Docker等;

[root@master run]# kubectl get pod -o wide
NAME           READY     STATUS    RESTARTS   AGE       IP            NODE
tomcat-dddmp   1/1       Running   0          5m        172.17.40.3   node2-192.168.52.130
tomcat-h4qsb   1/1       Running   0          5m        172.17.40.4   node2-192.168.52.130

8)节点维护完后,使用uncordon命令解锁node1,使其重新变得可调度;

[root@master run]# kubectl uncordon node1-192.168.52.132
node "node1-192.168.52.132" uncordoned

9)检查节点状态,发现node1重新变回Ready状态。

[root@master run]# kubectl get nodes
NAME                   STATUS    AGE
node1-192.168.52.132   Ready     1d
node2-192.168.52.130   Ready     1d

若想去掉某个节点,可以直接 只有kubectl delete node ip 则就会直接把节点删除了。

若想把这个节点再从新加入,只需要重启节点的kubelet kube-proxy 就可以了

kubernetes 节点维护 cordon, drain, uncordon相关推荐

  1. Kubernetes(K8s) kubectl cordon, drain, uncordon 常用命令

    Kubernetes(K8s)中使用Kubectl 命令行工具管理 Kubernetes 集群. kubectl 在 $HOME/.kube 目录中查找一个名为 config 的配置文件. 可以通过设 ...

  2. kubernetes节点维护命令——cordon, drain, uncordon

    https://blog.csdn.net/stonexmx/article/details/73543185

  3. kubernetes学习之cordon/drain/delete辨析

    最近在进行k8s的学习,有关停止节点调度的三个命令进行一下辨析: 一.cordon(停止调度) 影响最小,只会将node调为SchedulingDisabled 之后再发创建pod,不会被调度到该节点 ...

  4. k8s之Pod驱逐迁移和Node节点维护

    本篇是基于k8s-v1.18.0版本,参考https://cloud.tencent.com/developer/article/1552452. 一.环境说明 主机名 ip 系统版本 docker版 ...

  5. 6000个边缘Kubernetes节点驱动城市80万次智能停车,如何成为可能?

      城市的街道因为汽车数量的增长越来越繁忙,对于驾车一族而言,在热门区域寻找停车场更是无比头痛的事情.然而与此同时,其实也许很多办公楼.住宅楼.酒店和公共车库中仍有许多付费停车的资源未被充分利用. P ...

  6. kubectl源码分析之cordon and uncordon

    欢迎关注我的公众号: 目前刚开始写一个月,一共写了18篇原创文章,文章目录如下: istio多集群探秘,部署了50次多集群后我得出的结论 istio多集群链路追踪,附实操视频 istio防故障利器,你 ...

  7. Atlassian发布Kubernetes节点自动化扩展工具Escalator

    \ 看新闻很累?看技术新闻更累?试试下载InfoQ手机客户端,每天上下班路上听新闻,有趣还有料! \ \\ Atlassian把他们的内部工具Escalator发布为开源项目.该工具针对Kuberne ...

  8. kubernetes节点NotReady

    kubernetes节点NotReady 集群搭建后, 安装网络插件后,各节点都是 NotReady 状态. 查看服务运行日志 查看服务状态 查看详细信息 集群搭建后, 安装网络插件后,各节点都是 N ...

  9. 如何修改 Kubernetes 节点 IP 地址?

    如何修改 Kubernetes 节点 IP 地址? ✨博主介绍 前言 环境 操作 master 节点 node 节点 推荐操作 个人总结 ✨博主介绍

最新文章

  1. ES doc_values介绍2——本质是field value的列存储,做聚合分析用,ES默认开启,会占用存储空间...
  2. linux vnc 屏幕大小,Linux系统下vnc 的配置和使用方法
  3. 关于编译GITHUB上的工程
  4. hdu1428(spfa与记忆化搜索)
  5. 将微服务部署到 Azure Kubernetes 服务 (AKS) 实践
  6. BugkuCTF-WEB题计算器
  7. 第三方支付将出新规 严防信用卡套现
  8. 未来论坛:AI决策的可靠性和可解释性
  9. 对佛教大小无别的弦论解释
  10. python输出欢迎某某某_Python基础中所出现的异常报错总结,python基础总结
  11. java实例化的4种方式
  12. watch 深度监听及立即执行
  13. php 生成多个水印,php 生成水印的完整代码
  14. OpenHarmony,一路前行,为了奇迹
  15. iapp将音量调至最大
  16. 【软考】【系统架构设计师】最小生成树知识点
  17. 在Unity中模仿游戏《江南百景图》中物体的出现效果
  18. 网易七鱼客服对接记录以及Vue项目里使用
  19. 将html字符串转换成html标签显示到页面上(转)
  20. 【阿里云高校计划】实现简单的身份证识别系统!

热门文章

  1. 从零开始学数据分析之——《线性代数》第三章 n维向量
  2. shell 相关操作
  3. 技术话题(2)实时通讯RT和同步实时通讯IRT的区别
  4. 软考高级之系统架构设计师系列【2】考试说明及考点分析
  5. chrome android 中文版下载,谷歌chrome安卓版中文
  6. 反向迭代器---迭代器适配器
  7. 基于FPGA的密码锁开发——(1)密码锁驱动
  8. 【数据科学】01 数据科学概述
  9. 喝可乐问题,2个空瓶换一瓶可乐
  10. 系统监控——监控系统选型分析及误区探讨