在k8s的项目中今天需要停止某一节点的服务,对该节点进行更新、升级、或者是更换硬件时,这个时候需要对节点进行设置,让其不参与k8s的调度,具体的设置方法如下
使用cordon设置节点不可调度
kubectl cordon node_name kubectl uncordon node_name #取消不可调度
当使用cordon来设置节点不可调度时,目前运行在该节点上的POD不受影响,能够继续运行
当使用cordon设置以后查看node时,该节status后面会跟一个SchedulingDisabled的状态
如果我们想该节点上不调度任务POD,那么此时我们可以使用drain命令来驱逐
kubectl drain node_name --delete-local-data --ignore-daemonsets --force
–delete-local-data :即使pod使用了emptyDir也删除; –ignore-daemonsets :忽略deamonset控制器的pod,如果不忽略,deamonset控制器控制的pod被删除后可能马上又在此节点上启动起来,会成为死循环 –force :不加force参数只会删除该NODE上由ReplicationController, ReplicaSet,DaemonSet,StatefulSet or Job创建的Pod,加了后还会删除’裸奔的pod’
节点删除的方法
kubectl delete node node_name
然后去该节点上执行
kubeadm reset
重新加入该节点的方法,在master上执行
kubeadm token create --print-join-command
上述命令会生成加入集群命令,然后去之前删除的节点执行下列命令
kubeadm join 192.168.90.220:6443 --token si8a8j.7ykocpr5nqsqmt7v --discovery-token-ca-cert-hash sha256:1977d7ea82e2afe92573e8f6d35705470b6bba6a1b2a63ac25bef680a50ec121
最后检查下节点状态
kubectl get node -o wide
内容版权声明:除非注明,否则皆为本站原创文章。
转载注明出处:https://sulao.cn/post/872
相关阅读
- k8s使用flannel作为CNI网络插件
- k8s中harbor-database-0日志报Permissions should be u=rwx (0700)的处理方法
- k8s使用helm部署harbor镜像仓库并使用nodeport方式暴露
- k8s集群部署prometheus/node-exporter/dcgm-exporter
- k8s中calico匹配多种网络接口名字的方法
- ubuntu22.04使用containerd部署k8s集群
- k8s集群kube-proxy从iptables模式切换到ipvs模式
- k8s级联删除(删除deployment却删除不了rs和pod)异常问题的处理办法
- k8s中修改containerd存储目录并将数据迁移到新磁盘目录
- k8s网络cni插件calico的安装和网络模式切换
评论列表