在硬件升级、硬件维护等情况下,我们需要将某些Node进行隔离,脱离Kubernetes集群的调度范围。Kubernetes提供了一种机制,即可以将Node纳入调度范围,也可以将Node脱离调度范围。

使用配置文件的方式

创建配置文件unschedule_node.yaml,在spec部分指定unschedulable为true:

apiVersion:  V1
kind: Node
metadata:
name: kube-node1
lables:
kubernetes.io/hostname: kubernetes-minion1
spec:
unschedulable: true

然后,通过 kubectl replace 命令完成对 Node 状态的修改:

kubectl replace -f unschedule_node.yaml
nodes kube-node1 replaced

查看 Node 的状态,可以观察到在Node的状态中增加了一项SchedulingDisabled:

kubectl get nodes
NAME STATUS ROLES AGE VERSION
kube-node1 Ready,SchedulingDisabled <none> 21d v1.10.4
kube-node2 Ready <none> 21d v1.10.4
kube-node3 Ready <none> 21d v1.10.4

对于后续创建的pod,系统将不会再向该 Node 进行调度。

使用命令的方式

直接使用 kubectl patch命令完成:

kubectl patch node kube-node1 -p '{"spec":{"unschedulable":true}}'

需要注意的是,将某个 Node 脱离调度范围时,在其上运行的pod并不会自动停止,管理员需要手动停止在该 Node 上运行的 Pod。

同样,如果需要将某个 Node 重新纳入集群调度范围,则将 unschedulable 设置为 false,再次执行 kubectl replace 或 kubectl patch 命令就能恢复系统对改 Node 的调度。

kubectl的子命令cordon和uncordon也用于实现将Node进行隔离和恢复调度的操作。

例如,使用kubectl cordon对某个Node进行隔离调度操作。

kubectl cordon k8s-node1
node "kube-node1" cordoned

恢复

kubectl uncordon k8s-node1
node "kube-node1" uncordoned

图形化界面操作

这里采用的时kuboard界面,查看集群节点,选择一个节点进入,会看到“暂停调度”,



Kubernetes Node的隔离与恢复的更多相关文章

  1. kubernetes node管理

    目录 Node的扩缩容 删除node节点 Node的隔离与恢复 通过配置文件实现 通过命令行的方式实现 恢复 更新资源对象的label 给一个node添加一个label 将pod调度到指定的node ...

  2. 三、安装并配置Kubernetes Node节点

    1. 安装并配置Kubernetes Node节点 1.1 安装Kubernetes Node节点所需服务 yum -y install kubernetes   通过yum安装kubernetes服 ...

  3. kubernetes之node隔离与恢复

    需求: 在硬件升级, 硬件维护等情况下, 我们需要将某些node隔离, kubectl cordon <node_name> #禁止pod调度到该节点上, 在其上运行的pod并不会自动停止 ...

  4. Kubernetes Master节点灾备恢复操作指南---升级版

    本文档简述了Kubernetes主节点灾备恢复的相关步骤,供在发生k8s master崩溃时操作. 就算是在k8s里部署了etcd群集, 主节点控制组件的高可用节点,灾备恢复也是必须要实现的操作,才能 ...

  5. kubernetes node节点失效 调度

    kubernetes 配置: 测试node挂 机,发布需要等几分才会 在其它 的node机器 启动,这个明显不合理,对于大多数业务 kube-controller-manager配置: /etc/sy ...

  6. kubernetes Node节点部署(四)

    一.部署kubelet 1.1.二进制包准备 将软件包从linux-node1复制到linux-node2中去 [root@linux-node1 ~]# cd /usr/local/src/kube ...

  7. kubernetes node SchedulingDisabled

    问题: k8s 集群的节点处于 SchedulingDisabled 解决方案 kubectl patch node NodeName -p "{\"spec\":{\& ...

  8. 《Kubernetes权威指南》——运维技巧

    1 Node的隔离和恢复 方法1: 创建新的Node配置文件指定spec.unschedulable: true 通过kubectl replace完成对Node的状态修改 kubectl repla ...

  9. 基于kubernetes集群的Vitess最佳实践

    概要 本文主要说明基于kubernetes集群部署并使用Vitess; 本文假定用户已经具备了kubernetes集群使用环境,如果不具备请先参阅基于minikube的kubernetes集群搭建, ...

随机推荐

  1. java。多态

    package Demo.oop.APP.Demo05; public class application { public static void main(String[] args) { //一 ...

  2. Kafka Topic Partition Offset 这一长串都是啥?

    摘要:Offset 偏移量,是针对于单个partition存在的概念. 本文分享自华为云社区<Kafka Topic Partition Offset 这一长串都是啥?>,作者: gent ...

  3. DelayQueue达到定时触发效果

    DelayQueue的特点就是插入Queue中的数据可以按照自定义的delay时间进行排序.只有delay时间小于0的元素才能够被取出. 这样子,只要开启一个线程循环从DelayQueue中取值执行, ...

  4. github访问较慢问题初步解决方案

    简介 众所周知,github在国内向来都是访问的非常坎坷,不挂代理访问起来非常困难,本文将介绍一种不依赖代理的加快访问的方式,但不一定可行哦,只能说是优化 步骤 1.在搜索框中输入记事本或者notep ...

  5. python自带gui插件tkinter使用小结

    1.tkinter简介 Tkinter(即 tk interface,简称"Tk")本质上是对 Tcl/Tk 软件包的 Python 接口封装,它是 Python 官方推荐的 GU ...

  6. Spring 02 控制反转

    简介 IOC IOC(Inversion of Control),即控制反转. 这不是一项技术,而是一种思想. 其根本就是对象创建的控制权由使用它的对象转变为第三方的容器,即控制权的反转. DI DI ...

  7. 盘点Vue2和Vue3的10种组件通信方式(值得收藏)

    Vue中组件通信方式有很多,其中Vue2和Vue3实现起来也会有很多差异:本文将通过选项式API 组合式API以及setup三种不同实现方式全面介绍Vue2和Vue3的组件通信方式.其中将要实现的通信 ...

  8. 来瞧瞧,WPF 炫酷走马灯!

    来瞧瞧,WPF 炫酷走马灯! 控件名:SpotLight 作者:WPFDevelopersOrg 原文链接: https://github.com/WPFDevelopersOrg/WPFDevelo ...

  9. centos 安装ftp服务BUG

    安装完成之后匿名可登录,但是先创建的用户名和密码无法登录,最后排查原因是/etc/pam.d/vsftpd 文件注释掉第四行 auth required pam_shells.so

  10. kubernetes之镜像拉取策略ImagePullSecrets;

    1.容器镜像是什么? 1.容器镜像(Container Image)是最终运行的软件: 2.容器镜像(最初为Docker镜像,现在叫OCI镜像更合适)是将软件打包的形式.但是容器镜像还可以携带额外的设 ...