Kubernetes集群节点维护

按照kubernetse设计原则,node节点只运行程序,由kubelet采集和提交数据与kube-apiserver交互更新,最终数据落入etcd中

由于node节点存在异常,需要
1. 将异常node节点打污点标记,防止再被调度
2. 异常节点node上的pod驱逐(若有)
3. 异常node节点维护(更新程序、重启等)
4. 取消异常node节点的五点标签

# 服务中断时间=停机等待5分钟时间+重建时间+服务启动时间+readiness探针检测正常时间

# 集群健康检查
kubectl get cs
kubectl get node -owide
kubectl get pod -A | grep -v Running

# 命令查询
kubectl taint nodes node1 key1=value1:NoSchedule    #设置node1节点不可调度
kubectl taint nodes node1 key1=value1:NoSchedule-   #设置node1节点可调度

# NoSchedule: 一定不能被调度
# PreferNoSchedule: 尽量不要调度
# NoExecute: 不仅不会调度, 还会驱逐Node上已有的Pod

# 将 node 节点标记为不可调度,不影响现有 pod,daemonSet 不受影响
kubectl cordon node-name

# 驱逐该节点的 pod
kubectl drain node-name

# 驱逐pod,同时为node加上污点标签
kubectl drain node --ignore-daemonsets

--delete-local-data  # 删除本地数据,清空emptyDir
--ignore-daemonsets  # 忽略DeamonSet
--force              # 不加force参数只会删除该node节点上的ReplicationController, ReplicaSet, DaemonSet,StatefulSet or Job,加上后所有pod都将删除

# 维护结束,节点重新投入使用
kubectl uncordon node-name

# 删除节点
kubectl delete node node-name
posted @ 2021-09-21 19:30  AlexG  阅读(208)  评论(0编辑  收藏  举报