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
 

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐