当前位置: 首页 > news >正文

k8s 维护node与驱逐pod

1.维护node节点

设置节点状态为不可调度状态,执行以下命令后,节点状态会多出一个SchedulingDisabled的状态,即新建的pod不会往该节点上调度,本身存在node中的pod保持正常运行

kubectl cordon k8s-node01

kubectl get node

2.驱逐pod

在node节点设置为不可调度状态后,就可以开始驱逐本节点上的pod了

kubectl drain k8s-node01 --ignore-daemonsets --delete-local-data

--delete-local-data:在驱逐节点之前,删除该节点上的 Pod 的本地数据。本地数据包括 Pod 的日志、镜像和其他本地数据。如果不添加此选项,则本地数据将保留在节点上,并且需要手动清理

--ignore-daemonsets:忽略 DaemonSet 类型的 Pod。DaemonSet 是一种在 Kubernetes 集群的每个节点上运行一个 Pod 的控制器。如果不添加此选项,则 kubectl drain 命令会尝试驱逐所有类型的 Pod,包括 DaemonSet 类型的 Pod。在某些情况下,DaemonSet 类型的 Pod 是必需的,因此应该使用此选项来忽略它们

驱逐pod的工作流程:

1.首先,Kubernetes 会将 Pod 标记为“删除中”,并阻止新的请求发送到该 Pod

2.然后,Kubernetes 会向 Pod 发送 SIGTERM 信号,触发优雅关闭。在容器中运行的进程可以捕获此信号并执行清理操作

3.如果在默认的 30 秒的优雅期内 Pod 没有关闭,则 Kubernetes 会发送 SIGKILL 信号来强制终止 Pod

如果实在驱逐不掉可以加上--force 参数

--force:强制驱逐节点上的所有 Pod。如果不添加此选项,则 kubectl drain 命令会等待所有 Pod 关闭或重新调度到其他节点上。如果某些 Pod 无法正常关闭或重新调度,则 kubectl drain 命令会一直等待,直到超时。使用 --force 选项可以强制终止所有 Pod 并立即驱逐节点。需要注意的是,这可能会导致数据丢失或其他不良影响,因此应该谨慎使用

在node节点驱逐完所有pod后,可以对该node节点升级硬件资源等操作

3.删除pod

若是在新加入工作节点,只想调度一部分pod到新节点上的情况下,需要使用删除pod的方法去实现

需要对所有旧的node节点都设置不可调度状态,在执行删除pod操作

kubectl cordon k8s-node02

kuebctl delete pod pod名称 -n 名称空间

此时被删除的pod就会调度到新的node节点上

删除pod的工作流程:

1.首先,Kubernetes 会将 Pod 标记为“删除中”,并阻止新的请求发送到该 Pod

2.然后,Kubernetes 会向 Pod 发送 SIGTERM 信号,触发优雅关闭。在容器中运行的进程可以捕获此信号并执行清理操作

3.如果在默认的 30 秒的优雅期内 Pod 没有关闭,则 Kubernetes 会发送 SIGKILL 信号来强制终止 Pod

也可以在delete命令中使用如下参数修改默认的优雅关闭时间--grace-period=30

调度完成后,恢复旧的node节点为可调度状态

kubectl uncordon k8s-node02

http://www.lryc.cn/news/90632.html

相关文章:

  • SouapUI接口测试之创建性能测试
  • springboot整合kafka入门
  • Rust 笔记:Rust 语言中的字符串
  • 华为OD机试真题 Java 实现【将真分数分解为埃及分数】【牛客练习题】
  • Zemax Lumerical | 二维光栅出瞳扩展系统优化
  • Linux-0.11 文件系统read_write.c详解
  • 什么是用户态和内核态?用户态切换内核态会有什么影响?
  • 探索iOS之CoreImage框架
  • qml 使用Shape 画图形
  • MySQL数据库修改root账户密码
  • 基于springboot+Vue+ Element-Plus+mysql实现学生宿舍管理系统
  • 中国人才选拔制度演变
  • 【JavaSE】Java基础语法(十六):抽象类
  • 【Kafka】超详细介绍
  • 2023 华为 Datacom-HCIE 真题题库 07/12--含解析
  • Spring的作用域和生命周期
  • 岭回归有看点:正则化参数解密,显著性不再成问题!
  • Android 12.0修改recovery 菜单项字体大小
  • 【计算机网络】 7、websocket 概念、sdk、实现
  • python中的常见运算符
  • TypeScript类型
  • Integer源码
  • 【四】设计模式~~~创建型模式~~~建造者模式(Java)
  • MarkDown的基本使用方法
  • IDEA 安装配置步骤详解
  • 【网络】· 路由器中配置单臂路由和DHCP,VTP原理
  • Python 子域名扫描工具:使用多线程优化
  • 宝塔面板一键部署Z-Blog博客 - 内网穿透实现公网访问
  • 深入理解设计原则之单一职责原则(SRP)
  • 钉钉群通过短信转发器接收手机短信消息