k8s node的隔离与恢复

本文详细介绍如何在Kubernetes中使用不同方法对节点进行隔离和恢复调度,包括使用YAML文件、kubectl patch以及cordon和uncordon命令。通过这些操作,可以在节点硬件升级或维护时避免调度新的Pod到该节点。

k8s node的隔离与恢复
使用于node的硬件升级和维护,让node脱离k8s的调度范围
进行隔离时,只隔离了node,该node上运行的pod并不会自动停止,需要手动停止

1.使用yaml文件进行隔离和恢复调度(可能系统会报错,不允许进行隔离)

隔离:
vim unschedule_node.yaml

apiVersion: v1
kind: Node
metadata:
  name: kubernetes-node1
  labels:
    kubernetes.io/hostname: kubernetes-node1
spec:
  unschedulable: true
  
使用kubectl replace修改node的状态
kubectl replace -f unschedule_node.yaml

查看node的状态,注意SchedulingDisabled
kubectl get nodes

将unschedule_node.yaml文件种的unschedulagle: true改为unschedulagle: false后再运行yaml文件可以恢复调度
kubectl replace -f unschedule_node.yaml

查看node状态无SchedulingDisabled
kubectl get nodes

2.使用kubectl patch实现node的隔离和恢复调度,需要配置patch
隔离
kubectl patch node1 kubernetes-node1 '{"spec":{"unschedulable":true}}'
恢复调度
kubectl patch node1 kubernetes-node1 '{"spec":{"unschedulable":false}}'

3.使用cordon和uncordon进行隔离和恢复调度
[root@kubernetes k8s]# kubectl cordon kubernetes-node1
node/kubernetes-node1 cordoned

[root@kubernetes k8s]# kubectl get nodes
NAME               STATUS                     ROLES    AGE    VERSION
kubernetes         Ready                      master   176d   v1.13.3
kubernetes-node1   Ready,SchedulingDisabled   <none>   176d   v1.13.3
kubernetes-node2   Ready                      <none>   176d   v1.13.3

[root@kubernetes k8s]# kubectl uncordon kubernetes-node1
node/kubernetes-node1 uncordoned
[root@kubernetes k8s]# kubectl get nodes
NAME               STATUS   ROLES    AGE    VERSION
kubernetes         Ready    master   176d   v1.13.3
kubernetes-node1   Ready    <none>   176d   v1.13.3
kubernetes-node2   Ready    <none>   176d   v1.13.3
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值