k8s驱逐
@@@@@@@@@@@@@@@@@@@@@@@@@@@
1. 使用标签选择器(Label Selector)驱逐
# 语法:使用 --pod-selector 指定标签
kubectl drain <node-name> --pod-selector=<label-key>=<label-value>
# 示例:驱逐带有特定标签的 Pod
kubectl drain node1 --pod-selector=app=nginx --ignore-daemonsets
# 驱逐多个标签匹配的 Pod
kubectl drain node1 --pod-selector="app=nginx,environment=prod" --ignore-daemonsets
2. 使用命名空间(Namespace)限制
# 驱逐特定命名空间中的 Pod
kubectl drain node1 --pod-selector=app=mysql --namespace=database
# 组合使用命名空间和标签选择器
kubectl drain node1 --pod-selector=tier=frontend --namespace=production --ignore-daemonsets
3. 使用复杂的标签选择器
# 使用 in 运算符
kubectl drain node1 --pod-selector="app in (nginx,apache)" --ignore-daemonsets
# 使用 notin 运算符
kubectl drain node1 --pod-selector="app notin (mysql,redis)" --ignore-daemonsets
# 使用存在性判断
kubectl drain node1 --pod-selector="environment" --ignore-daemonsets
4. 实用组合命令
# 先查看符合条件的 Pod
kubectl get pods --selector=app=nginx -o wide
# 安全驱逐带宽限期
kubectl drain node1 --pod-selector=app=nginx --grace-period=300 --ignore-daemonsets
# 强制驱逐(慎用)
kubectl drain node1 --pod-selector=app=nginx --force --ignore-daemonsets --delete-local-data
5. 验证和监控
# 检查驱逐前的 Pod
kubectl get pods -l app=nginx -o wide
# 监控驱逐过程
kubectl get pods -l app=nginx -w
# 检查节点状态
kubectl describe node node1
浙公网安备 33010602011771号