zoukankan      html  css  js  c++  java
  • Kubernetes Node的隔离与恢复

    在硬件升级、硬件维护等情况下,我们需要将某些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界面,查看集群节点,选择一个节点进入,会看到“暂停调度”,

  • 相关阅读:
    js实现弹窗后选择信息填入text标签中以及需要注意的问题
    JDBC链接mysql之后出现read-only
    面试题之心理测试题及答案
    互联网经济思维故事
    模板
    工具包、类
    开源项目
    项目开发工具
    Java API 常用 详解
    spring文章
  • 原文地址:https://www.cnblogs.com/sanduzxcvbnm/p/14776753.html
Copyright © 2011-2022 走看看