zoukankan      html  css  js  c++  java
  • k8s命令对node调度 cordon,drain,delete 区别

    此三个命令都会使node停止被调度,后期创建的pod不会继续被调度到该节点上,但操作的暴力程度不一

    cordon 停止调度
    影响最小,只会将node调为SchedulingDisabled
    之后再发创建pod,不会被调度到该节点
    旧有的pod不会受到影响,仍正常对外提供服务

    恢复调度
    kubectl uncordon node_name
    ================================================
    drain 驱逐节点
    首先,驱逐node上的pod,其他节点重新创建
    接着,将节点调为** SchedulingDisabled**

    恢复调度
    kubectl uncordon node_name


    对节点执行维护操作之前(例如:内核升级,硬件维护等),您可以使用 kubectl drain 安全驱逐节点上面所有的 pod。
    安全驱逐的方式将会允许 pod 里面的容器遵循指定的 PodDisruptionBudgets 执行优雅的中止。
    注: 默认情况下,kubectl drain 会忽略那些不能杀死的系统类型的 pod,如果您想了解更多详细的内容,请参考kubectl drain

    kubectl drain 返回成功表明所有的 pod (除了前面排除的那些)已经被安全驱逐(遵循期望优雅的中止期,并且没有违反任何应用程序级别的中断预算)。
    然后,通过对物理机断电或者在云平台上删除节点所在的虚拟机,都能安全的将节点移除。

    # 确定要排空的节点的名称
    kubectl get nodes
    # 查看获取pod名字
    kubectl get po
    # 命令node节点开始释放所有pod,并且不接收新的pod进程
    kubectl drain [node-name] --force --ignore-daemonsets --delete-local-data
    # 这时候把需要做的事情做一下。比如上面说的更改docker文件daemon.json或者说node节点故障需要进行的处理操作
    # 然后恢复node,恢复接收新的pod进程
    kubectl uncordon [node-name]
    ================================================
    delete 删除节点
    首先,驱逐node上的pod,其他节点重新创建
    然后,从master节点删除该node,master对其不可见,失去对其控制,master不可对其恢复

    恢复调度,需进入node节点,重启kubelet
    基于node的自注册功能,节点重新恢复使用
    systemctl restart kubelet

    delete是一个比较粗暴的命令,它会将被删node上的pod直接驱逐,由其他node创建(针对replicaset),然后将被删节点从master管理范围内移除,master对其失去管理控制,若想使node重归麾下,必须在node节点重启kubelet

    ================================================
    drain的参数
    --force
    当一些pod不是经 ReplicationController, ReplicaSet, Job, DaemonSet 或者 StatefulSet 管理的时候
    就需要用--force来强制执行 (例如:kube-proxy)
     
    --ignore-daemonsets
    无视DaemonSet管理下的Pod
     
    --delete-local-data
    如果有mount local volumn的pod,会强制杀掉该pod并把料清除掉
    另外如果跟本身的配置讯息有冲突时,drain就不会执行

    ================================================

    [root@ouou-210 ~]# kubectl drain ouou-212
    node/ouou-212 already cordoned
    error: unable to drain node "ouou-212", aborting command...

    There are pending nodes to be drained:
     ouou-212
    cannot delete Pods with local storage (use --delete-local-data to override): default/nginx-deployment-test-557d8b6448-bmgl5, default/nginx-deployment-test-557d8b6448-ggd8d, default/nginx-deployment-test-557d8b6448-h675g, default/nginx-deployment-test-557d8b6448-lhqzz, default/nginx-deployment-test-557d8b6448-s94d4
    cannot delete DaemonSet-managed Pods (use --ignore-daemonsets to ignore): kube-system/kube-flannel-ds-amd64-djgjx, kube-system/kube-proxy-qj5wn
    [root@ouou-210 ~]# kubectl drain ouou-212 --delete-local-data --ignore-daemonsets


    ————————————————
    版权声明:本文为CSDN博主「网络飞鸥」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/erhaiou2008/article/details/104986006/

  • 相关阅读:
    shell 1>&2 2>&1 &>filename重定向的含义和区别
    Nginx日志切割
    mycli工具mysql命令自动补全
    2019-2020-2 20175317钟睿文《网络对抗技术》Exp9 Web安全基础
    2019-2020-2 20175317钟睿文《网络对抗技术》Exp8 Web基础
    2019-2020-2 20175317钟睿文《网络对抗技术》Exp7 网络欺诈防范
    2019-2020-2 20175317钟睿文《网络对抗技术》Exp6 MSF基础应用
    2019-2020-2 20175317钟睿文《网络对抗技术》Exp5 信息搜集与漏洞扫描
    2019-2020-2 20175317钟睿文《网络对抗技术》Exp4 恶意代码分析
    2019-2020-2 20175317钟睿文《网络对抗技术》Exp3 免杀原理与实践
  • 原文地址:https://www.cnblogs.com/javalinux/p/14684446.html
Copyright © 2011-2022 走看看