kubernetes 节点维护 cordon, drain, uncordon
这三个命令是正式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相关推荐
- Kubernetes(K8s) kubectl cordon, drain, uncordon 常用命令
Kubernetes(K8s)中使用Kubectl 命令行工具管理 Kubernetes 集群. kubectl 在 $HOME/.kube 目录中查找一个名为 config 的配置文件. 可以通过设 ...
- kubernetes节点维护命令——cordon, drain, uncordon
https://blog.csdn.net/stonexmx/article/details/73543185
- kubernetes学习之cordon/drain/delete辨析
最近在进行k8s的学习,有关停止节点调度的三个命令进行一下辨析: 一.cordon(停止调度) 影响最小,只会将node调为SchedulingDisabled 之后再发创建pod,不会被调度到该节点 ...
- k8s之Pod驱逐迁移和Node节点维护
本篇是基于k8s-v1.18.0版本,参考https://cloud.tencent.com/developer/article/1552452. 一.环境说明 主机名 ip 系统版本 docker版 ...
- 6000个边缘Kubernetes节点驱动城市80万次智能停车,如何成为可能?
城市的街道因为汽车数量的增长越来越繁忙,对于驾车一族而言,在热门区域寻找停车场更是无比头痛的事情.然而与此同时,其实也许很多办公楼.住宅楼.酒店和公共车库中仍有许多付费停车的资源未被充分利用. P ...
- kubectl源码分析之cordon and uncordon
欢迎关注我的公众号: 目前刚开始写一个月,一共写了18篇原创文章,文章目录如下: istio多集群探秘,部署了50次多集群后我得出的结论 istio多集群链路追踪,附实操视频 istio防故障利器,你 ...
- Atlassian发布Kubernetes节点自动化扩展工具Escalator
\ 看新闻很累?看技术新闻更累?试试下载InfoQ手机客户端,每天上下班路上听新闻,有趣还有料! \ \\ Atlassian把他们的内部工具Escalator发布为开源项目.该工具针对Kuberne ...
- kubernetes节点NotReady
kubernetes节点NotReady 集群搭建后, 安装网络插件后,各节点都是 NotReady 状态. 查看服务运行日志 查看服务状态 查看详细信息 集群搭建后, 安装网络插件后,各节点都是 N ...
- 如何修改 Kubernetes 节点 IP 地址?
如何修改 Kubernetes 节点 IP 地址? ✨博主介绍 前言 环境 操作 master 节点 node 节点 推荐操作 个人总结 ✨博主介绍
最新文章
- ES doc_values介绍2——本质是field value的列存储,做聚合分析用,ES默认开启,会占用存储空间...
- linux vnc 屏幕大小,Linux系统下vnc 的配置和使用方法
- 关于编译GITHUB上的工程
- hdu1428(spfa与记忆化搜索)
- 将微服务部署到 Azure Kubernetes 服务 (AKS) 实践
- BugkuCTF-WEB题计算器
- 第三方支付将出新规 严防信用卡套现
- 未来论坛:AI决策的可靠性和可解释性
- 对佛教大小无别的弦论解释
- python输出欢迎某某某_Python基础中所出现的异常报错总结,python基础总结
- java实例化的4种方式
- watch 深度监听及立即执行
- php 生成多个水印,php 生成水印的完整代码
- OpenHarmony,一路前行,为了奇迹
- iapp将音量调至最大
- 【软考】【系统架构设计师】最小生成树知识点
- 在Unity中模仿游戏《江南百景图》中物体的出现效果
- 网易七鱼客服对接记录以及Vue项目里使用
- 将html字符串转换成html标签显示到页面上(转)
- 【阿里云高校计划】实现简单的身份证识别系统!