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界面,查看集群节点,选择一个节点进入,会看到“暂停调度”,

  • 相关阅读:
    Android学习笔记触摸事件
    Android学习笔记长按事件的处理
    Android学习笔记物理按键事件处理
    JAVA爬虫入门学习
    SpringBoot的服务入门(Get、Post)
    spring boot 入门学习
    Java 爬虫简单起步
    哇 好久不写C 忘得差不多
    Winfrom窗体应用程序___CefSharp的基础应用
    Winfrom窗体应用程序___DataGridView
  • 原文地址:https://www.cnblogs.com/sanduzxcvbnm/p/14776753.html
Copyright © 2011-2022 走看看