k3s|如何将k8s集群的node节点设置不可调度或删除node节点?
k3s|如何将k8s集群的node节点设置不可调度或删除node节点?
k3s是由 Rancher 公司开发的轻量级Kubernetes,是经CNCF一致性认证的Kubernetes发行版,专为物联网及边缘计算设计。
由于运行 K3s 所需的资源相对较少,所以 K3s 也适用于开发和测试场景。
停止调度的命令
使k8s集群的某个 node 停止被调度的命令有三个,分别是 cordon、drain 和 delete。执行该命令后,后期创建的 pod 不会继续被调度到该节点上。
(1) cordon : 停止调度(不可调度,临时从K8S集群隔离)
该命令操作,只会将node标识为SchedulingDisabled不可调度状态。影响最小,只会将node标识为SchedulingDisabled不可调度状态。之后K8S再创建的pod资源,不会被调度到该节点。原有的 pod 不受影响,仍正常对外提供服务。
(2)drain 驱逐节点(先不可调度,然后排干)
该命令操作,会先驱逐 Node 上的 pod 资源到其他节点重新创建。接着,将节点调为 SchedulingDisabled 不可调度状态。
(3) delete 删除节点
该操作会先驱逐Node节点上的pod资源到其他节点重新创建,然后node节点删除,master失去对其控制,该节点从k8s集群删除。如果要恢复该节点,只能重新将该节点加入到K8S集群中。
下边演示一下具体操作步骤:
以下操作均在 master 节点 vm-2-debian 机器上执行:
- 查看本机环境(vm-2-debian):
root@vm-2-debian:~# k3s -v
k3s version v1.24.6+k3s1 (a8e0c66d)
go version go1.18.6
root@vm-2-debian:~# kubectl version
root@vm-2-debian:~# ping wang1234.net
PING wang1234.net (43.152.198.184) 56(84) bytes of data.
64 bytes from 43.152.198.184 (43.152.198.184): icmp_seq=1 ttl=43 time=292 ms
^C
--- wang1234.net ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 291.578/291.578/291.578/0.000 ms
- 确认节点信息
kubectl get nodes
kubectl get node -o wide
kubectl get po
kubectl get pod
kubectl get pods
root@vm-2-debian:~# kubectl get nodes
NAME STATUS ROLES AGE VERSION
vm-2-debian Ready control-plane,master 2d10h v1.24.6+k3s1
vm-14-debian Ready <none> 2d10h v1.24.6+k3s1
root@vm-2-debian:~# kubectl get po -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-6fb79bc456-df9rm 1/1 Running 0 34h 10.42.0.27 vm-2-debian <none> <none>
nginx-6fb79bc456-2c9f9 1/1 Running 0 34h 10.42.0.28 vm-2-debian <none> <none>
nginx-6fb79bc456-ltr85 1/1 Running 0 3s 10.42.1.23 vm-14-debian <none> <none>
可以看到有2个节点,3个pod,其中vm-2-debian节点有2个pod,vm-14-debian节点有1个pod。
- 使用 cordon 命令设置为不可调度
kubectl cordon vm-14-debian
root@vm-2-debian:~# kubectl cordon vm-14-debian
node/vm-14-debian cordoned
root@vm-2-debian:~# kubectl get nodes
NAME STATUS ROLES AGE VERSION
vm-2-debian Ready control-plane,master 2d10h v1.24.6+k3s1
vm-14-debian Ready,SchedulingDisabled <none> 2d10h v1.24.6+k3s1
root@vm-2-debian:~# kubectl get po -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-6fb79bc456-df9rm 1/1 Running 0 34h 10.42.0.27 vm-2-debian <none> <none>
nginx-6fb79bc456-2c9f9 1/1 Running 0 34h 10.42.0.28 vm-2-debian <none> <none>
nginx-6fb79bc456-ltr85 1/1 Running 0 5m44s 10.42.1.23 vm-14-debian <none> <none>
可以看到 vm-14-debian 节点状态变成了 “SchedulingDisabled” (按计划不可用),原有的 pod 依然有效。
如果想要取消不可调度,恢复到集群,可以使用 uncordon 命令:
kubectl uncordon vm-14-debian
root@vm-2-debian:~# kubectl uncordon vm-14-debian
node/vm-14-debian uncordoned
- 驱逐已经运行的业务容器
kubectl drain --ignore-daemonsets --delete-emptydir-data vm-14-debian
root@vm-2-debian:~# kubectl drain --ignore-daemonsets --delete-emptydir-data vm-14-debian
node/vm-14-debian already cordoned
WARNING: ignoring DaemonSet-managed Pods: kube-system/svclb-traefik-6760453c-gglvj
evicting pod default/nginx-6fb79bc456-ltr85
pod/nginx-6fb79bc456-ltr85 evicted
查看 node 与 pod 状态:
root@vm-2-debian:~# kubectl get nodes
NAME STATUS ROLES AGE VERSION
vm-2-debian Ready control-plane,master 2d11h v1.24.6+k3s1
vm-14-debian Ready,SchedulingDisabled <none> 2d10h v1.24.6+k3s1
root@vm-2-debian:~# kubectl get po -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-6fb79bc456-df9rm 1/1 Running 0 34h 10.42.0.27 vm-2-debian <none> <none>
nginx-6fb79bc456-2c9f9 1/1 Running 0 34h 10.42.0.28 vm-2-debian <none> <none>
nginx-6fb79bc456-ft8xd 1/1 Running 0 5m44s 10.42.0.30 vm-2-debian <none> <none>
可以看到在主节点 vm-2-debian 节点上重新启动了一个 pod,而已被驱逐的节点 vm-14-debian 上的 pod 已不存在了。
- 删除node 节点
kubectl delete node vm-14-debian
root@vm-2-debian:~# kubectl delete node vm-14-debian
node "vm-14-debian" deleted
root@vm-2-debian:~# kubectl get nodes
NAME STATUS ROLES AGE VERSION
vm-2-debian Ready control-plane,master 2d11h v1.24.6+k3s1
删除后,再次查看,只有 vm-2-debian 一个节点了。
参考链接
https://wang123.net/a/1582208859487895552
https://www.cnblogs.com/John-2011/p/14984900.html
https://cloud.tencent.com/developer/article/1796315
Thanks for reading.
k3s|如何将k8s集群的node节点设置不可调度或删除node节点?的更多相关文章
- k8s集群-node节点设置不可调度或者删除node节点
在master 执行1, 不可调度 kubectl cordon k8s-node- kubectl uncordon k8s-node- #取消 2,驱逐已经运行的业务容器 kubectl drai ...
- 搭建K8S集群
一.前言 我们将现有的虚拟机称之为Node1,用作主节点.为了减少工作量,在Node1安装Kubernetes后,我们利用VirtualBox的虚拟机复制功能,复制出两个完全一样的虚拟机作为工作节点. ...
- Centos 安装k8s 集群(单master开发环境)
本教程是在VM中搭建K8s 所以第一步骤先配置虚拟机的ip 和上网情况详细参考https://www.cnblogs.com/chongyao/p/9209527.html 开始搭建K8s集群 两台机 ...
- jenkins流水线部署springboot应用到k8s集群(k3s+jenkins+gitee+maven+docker)(2)
前言:上篇已介绍了jenkins在k3s环境部署,本篇继续上篇讲述流水线构建部署流程 1.从gitlab上拉取代码步骤 在jenkins中,新建一个凭证:Manage Jenkins -> Ma ...
- Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之部署master/node节点组件(四)
0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 1.部署master组件 ...
- K8s集群部署(三)------ Node节点部署
之前的docker和etcd已经部署好了,现在node节点要部署二个服务:kubelet.kube-proxy. 部署kubelet(Master 节点操作) 1.二进制包准备 [root@k8s-m ...
- Node节点如何加入K8S集群
k8s集群中,有时候发现有些节点状态为 NotReady,如何修复为Ready状态呢? [root@k8s-master~]# kubectl get nodes NAME STATUS ROLES ...
- 仅需60秒,使用k3s创建一个多节点K8S集群!
作者: Dawid Ziolkowski丨Container Solution云原生工程师 最近,我一直在Kubernetes上进行各种测试和部署.因此,我不得不一次又一次创建和销毁Kubernete ...
- 在node节点部署kubectl管理k8s集群
感谢!原文链接:https://blog.csdn.net/sinat_35930259/article/details/79994078 kubectl是k8s的客户端程序,也是k8s的命令行工具, ...
- 二进制部署1.23.4版本k8s集群-6-部署Node节点服务
本例中Master节点和Node节点部署在同一台主机上. 1 部署kubelet 1.1 集群规划 主机名 角色 IP CFZX55-21.host.com kubelet 10.211.55.21 ...
随机推荐
- 《STL源码剖析》Sort排序分析
整体而言: sort算法在数据量大时采用Quick Sort(快速排序),一旦分段后的数据量小于某个门槛,为避免Quick Sort的递归调用带来过大的额外负担,就改用Insertion Sort(插 ...
- 【深入浅出Seata原理及实战】「入门基础专题」探索Seata服务的AT模式下的分布式开发实战指南(2)
承接上文 上一篇文章说到了Seata 为用户提供了 AT.TCC.SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案.那么接下来我们将要针对于AT模式下进行分布式事务开发的原理进行介绍以及 ...
- 杂项 NOI2020 打铁记
杂项 NOI2020 打铁记 day -一个月 他一个月前,期末考试刚刚结束,开始了NOI2020的冲刺.虽然时间并不充足,但一想到一个月后能站在国赛的赛场上,与来自全国的高手们一较高下,他充满了干劲 ...
- angular---处于激活状态的路由加样式
- Xmake v2.7.6 发布,新增 Verilog 和 C++ Modules 分发支持
Xmake 是一个基于 Lua 的轻量级跨平台构建工具. 它非常的轻量,没有任何依赖,因为它内置了 Lua 运行时. 它使用 xmake.lua 维护项目构建,相比 makefile/CMakeLis ...
- Stream中的常用方法_count-Stream中的常用方法_limit
package A_Lian_two.D04; import java.util.stream.Stream; public class Demo06Stream_limit { public sta ...
- List_集合_介绍&常用方法-ArrayList集合
List_集合_介绍&常用方法 我们掌握了Collection接口的使用后,再来看看Collection接口中的子类,他们都具备那些特性呢?接下来,我们一起学习Collection中的常用几个 ...
- 关于C#中async/await的用法
一直对c#中async/await的用法模模糊糊,不太清晰,今天写了一下Demo彻底明确一下async/await的用法,以免因为对其不了解而对后期的业务产生影响(比如事务导致的锁表等等). 1. 首 ...
- YonBuilder移动开发平台App拉起第三方应用
在App的开发过程中,有一种常见场景,就是拉起第三方app,那么使用YonBuilder移动开发做app的时候,是怎么拉起第三方App的呢,下边我们讲一下步骤. 我们以安卓应用打开支付宝为例进行说明: ...
- 银河麒麟服务器操作系统安装VMware Tool
安装前提:确保虚拟机连接iso 注:因为我已经安装过VMware Tools,因此此时是显示重新安装 点击重新安装后,会弹出如下对话框,选择"是" 选择"确定" ...