在Kubernetes中,节点驱逐是一种管理和维护集群的重要操作,允许节点在维护、升级或者发生故障时从集群中移除,等到节点修复后,再重新承担pod调度功能。

1.K8s节点驱逐

节点驱逐是指将节点上运行的Pod迁移到其他可用节点上,并暂时从集群中移除目标节点。这个操作通常在节点维护、系统升级、硬件故障或者其他需要暂时离线节点的场景下使用。

2.使用场景

  • 节点维护

在进行节点维护时,需要将节点暂时移除,确保Pod能够在其他节点上继续运行。有一点要注意,在节点驱逐前,要保持集群中服务多副本,否则驱逐过程中可能会导致业务不可用

  • 节点升级

当需要对节点进行Kubernetes版本升级或者操作系统升级时,可以使用节点驱逐来确保服务的可用性。

  • 硬件故障或维修

当节点发生硬件故障或需要维修时,可以通过节点驱逐操作将节点下的Pod迁移到其他健康的节点上。

3.命令说明

cordon : 停止调度【不可调度,临时从K8S集群隔离】

该命令会将node标记为SchedulingDisabled不可调度状态,影响最小,之后K8S再创建的pod资源,不会被调度到该节点。原有的 pod 不受影响,仍正常对外提供服务。

drain :驱逐节点【设置不可调度,然后排干节点pod】

该命令操作,会先驱逐Node上的pod资源到其他节点重新创建,将节点调为SchedulingDisabled不可调度状态

总结:两个命令的区别在于,cordon命令执行后,新的pod创建不会调度过来,老的pod不受影响,drain执行会额外清除节点上的pod

4.操作步骤

K8S集群,其中一个node节点发生故障,状态为NotReady

[root@k8s ~]# kubectl get node
NAME STATUS ROLES AGE VERSION
10.10.12.10 Ready master,node 172d v1.20.6
10.10.12.26 Ready master,node 172d v1.20.6
10.10.12.27 Ready master,node 172d v1.20.6
10.10.12.15 Ready node 170d v1.20.6
10.10.12.11 NotReady node 60d v1.20.6

故障节点标记为不可调度

kubectl cordon <node-name> #此处name为节点ip 

[root@k8s ~]# kubectl get node
NAME STATUS ROLES AGE VERSION
10.10.12.10 Ready master,node 172d v1.20.6
10.10.12.26 Ready master,node 172d v1.20.6
10.10.12.27 Ready master,node 172d v1.20.6
10.10.12.15 Ready node 170d v1.20.6
10.10.12.11 NotReady,SchedulingDisabled node 60d v1.20.6

kubectl drain

drain --ignore-daemonsets

kubectl drain 命令会触发节点驱逐操作,并且将节点上的Pod迁移到其他节点上。

参数说明:

--delete-emptydir-data:强制驱逐节点上绑定了本地存储的Pod,例如coredns。

--ignore-daemonsets:忽略节点上的守护进程集Pod,通常为DaemonSet类型的Pod,例如flannel

查看节点驱逐状态

5.解除驱逐

当处理完节点问题,重新恢复为Ready状态后,需要将节点恢复可调度状态

取消节点驱逐

[root@k8s ~]# kubectl uncordon 10.10.12.11 node/10.10.12.11 uncordoned
[root@k8s ~]#
[root@k8s ~]# kubectl get node
NAME STATUS ROLES AGE VERSION
10.10.12.10 Ready master,node 172d v1.20.6
10.10.12.26 Ready master,node 172d v1.20.6
10.10.12.27 Ready master,node 172d v1.20.6
10.10.12.15 Ready node 170d v1.20.6
10.10.12.11 Ready node 60d v1.20.6

6. 注意事项

  • DaemonSet

在进行节点驱逐时,需要注意DaemonSet中的Pod,确保它们不会被驱逐,以维持集群的关键服务。

  • 确保Pod能够重新调度

在节点驱逐前,确保集群中有足够的可用资源,以便Pod能够顺利地重新调度到其他节点上。

  • 确认服务的高可用性

在进行节点驱逐时,要确保相关服务具备高可用性,以防止驱逐操作引起的业务中断,所有服务的多副本还是很有必要的。

通过良好的节点管理和调度策略,Kubernetes能够有效地应对节点维护、升级和故障情况。节点驱逐操作是集群维护的重要组成部分,合理使用并遵循最佳实践,能够确保业务的连续性和可靠性。

K8S故障处理:临时设置节点为不可调度(cordon与drain区别)的更多相关文章

  1. 使用Kubeadm创建k8s集群之节点部署(三十一)

    前言 本篇部署教程将讲述k8s集群的节点(master和工作节点)部署,请先按照上一篇教程完成节点的准备.本篇教程中的操作全部使用脚本完成,并且对于某些情况(比如镜像拉取问题)还提供了多种解决方案.不 ...

  2. 基于zk“临时顺序节点“的分布式锁

    import org.apache.zookeeper.*; import org.apache.zookeeper.data.Stat; import java.io.IOException; im ...

  3. K8s二进制部署单节点 master组件 node组件 ——头悬梁

    K8s二进制部署单节点   master组件 node组件   --头悬梁 1.master组件部署 2.node   组件部署 k8s集群搭建: etcd集群 flannel网络插件 搭建maste ...

  4. K8s二进制部署单节点 etcd集群,flannel网络配置 ——锥刺股

    K8s 二进制部署单节点 master    --锥刺股 k8s集群搭建: etcd集群 flannel网络插件 搭建master组件 搭建node组件 1.部署etcd集群 2.Flannel 网络 ...

  5. DELPHI TreeView 文件目录树和 设置节点图标 完整

        DELPHI TreeView 文件目录树和 设置节点图标   下载地址 http://download.csdn.net/detail/teststudio/6448293     需要制作 ...

  6. TreeView设置节点图标

    TreeView设置节点图标 没子节点的设置其图标为 0 有节点的设置其图标为 1 procedure TForm1.Button1Click(Sender: TObject);var   i:Int ...

  7. Zookeeper命令行操作(常用命令;客户端连接;查看znode路径;创建节点;获取znode数据,查看节点内容,设置节点内容,删除节点;监听znode事件;telnet连接zookeeper)

    8.1.常用命令 启动ZK服务 bin/zkServer.sh start 查看ZK服务状态 bin/zkServer.sh status 停止ZK服务 bin/zkServer.sh stop 重启 ...

  8. javascript之DOM编程设置节点插入节点

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. ztree设置节点checked,选中某节点等相关操作

    ztree设置节点checked,选中某节点等相关操作 1.根据id获取树的某个节点: var zTree = $.fn.zTree.getZTreeObj("mytree"); ...

  10. 转:zTree树控件入门之checkbox:如何动态设置节点的checkbox选择框启用与禁用状态(chkDisabled)

    当一棵树的部分节点根据登入用户角色不同而决定是否启用节点前的checkbox选择框的时候,我们应该如何做呢?也或者如何在页面加载的时候动态根据当前登入用户角色动态切换节点前的checkbox的禁用状态 ...

随机推荐

  1. 3-4 C++迭代器初步

    目录 3.4.0 为什么要有迭代器 3.4.1使用迭代器 迭代器的比较操作 用迭代器写一个遍历 取出迭代器中的元素:解引用 * 迭代器的类型 使用迭代器时的注意点 3.4.2 迭代器的算术操作 常见操 ...

  2. 3-3 C++ vector类型

    目录 3.3.0 模板(Template) vector说明 模板简介 3.3.1 vector的定义和初始化 初始化的方式 总结初始化 3.3.2 往vector中添加元素 3.3.3 vector ...

  3. 哪些网站可以申请免费的纯IP地址https证书

    申请免费纯IP地址HTTPS证书,您可以按照以下步骤进行: 一.选择证书颁发机构(CA) 目前,虽然一些大型云服务提供商(如阿里云.华为云.腾讯云等)已经取消了免费一年期SSL证书的供应,但仍有一些C ...

  4. 高性能计算-雅可比算法MPI通信优化(5)

    雅可比算法原理:如下图对方阵非边界元素求上下左右元素的均值,全部计算元素的数值计算完成后更新矩阵,进行下一次迭代. 测试目标:用MPI实现对8*8方阵雅可比算法迭代并行计算,用重复非阻塞的通信方式 # ...

  5. 聊一下怎么10分钟速水中危CVE

    题目是真的.今天晚上刚接触关于CVE的审计和提交.只能说:牛逼的是真牛逼,水的是真水. 我接下来教你,怎么在10分钟里找到一个CVE的中危漏洞并且提交.然后你就可以去咸鱼接单了,一个一铂快 打开htt ...

  6. 销讯通-CRM系统的功能远远不止于用来打卡

    在信息化的过程中,CRM系统其实很多企业都在用,最开始的设想是很好的,大家用着之后发现它可能最终只会沦为一个上班打卡考核或者是最基础的一个签到工具了,没有发挥它应有的一个功能. 最基础的一个诉求 我们 ...

  7. 《Django 5 By Example》阅读笔记:p521-p542

    <Django 5 By Example>学习第 18 天,p521-p542 总结,总计 22 页. 一.技术总结 1.django-parler django-parler 用于 mo ...

  8. 【位运算】codeforces 1775 C. Interesting Sequence

    题意 输入一个正整数 \(T(1 \leq T \leq 2000)\),代表 \(T\) 组测试用例.对于每个测试用例: 输入两个整数 \(n, m(0 \leq n, m \leq 10^{18} ...

  9. Electron 通信

    1.web向主进程发送消息 (单项) 使用ipcMain.on 监听事件 const hanle = (event, data) => { console.log(event) console. ...

  10. Lummmax 雷曼克斯 翔龙 X15 专业对讲机常用功能

    Lummmax 雷曼克斯 翔龙 X15 专业对讲机常用功能 工作模式切换 ESC/M 在频率模式 (VFO) 与信道模式之间切换 编辑信道 在频率模式 (VFO) 下,输入目标频率并进行相关设置之后, ...