K8s中重启n个pods
Restart n number of pods in K8s
我正在 Kubernetes 集群上 运行 开发一个应用程序。我想按顺序手动重启第n个pods。我们能做到吗? kubectl scale <options>
会在这里工作吗?
有了 replicaSet,你总是可以扩展 up/down 'N' 个 pods 的数量,这将重新启动它们,如果你需要重新启动特定的一个,只需删除它们,RS 就会启动给你一个新的。
答案是是,您可以重新启动特定部署的 10 个 pods 中的 5 个。虽然这不会是一个单一的命令。
正如您正确假设的那样 kubectl scale
会在这里帮助您。
重启 5 次 pods 10 次中包含 2 次操作:
将部署从 10 人缩减到 5 人pods
kubectl scale deployment deployment-name --replicas=5
将部署从 5 个扩展到 10 个 pods 返回:
kubectl scale deployment deployment-name --replicas=10
您也可以删除确切的 pods,kube-controller-manager
和 deployment/replicaset
控制器将确保 desired
状态与确切状态匹配,因此缺少 pods 将自动重新安排。
然而,按照最佳实践(感谢@DavidMaze),理想的情况是重新启动整个部署。这可以通过以下命令完成:
kubectl rollout restart deployment deployment-name
这是一个更安全的选项,它允许在任何 mistakes/errors 的情况下轻松回滚。
当请求 rollout restart
时,也可以在部署中逐一重启 pods。
.spec.strategy.rollingUpdate.maxUnavailable
应设置为 1
这意味着在重启期间最多只有 1 pods 不可用 - reference to max unavailable.
对于这种情况,我们也可以使用 bash 脚本。此 shell 脚本要求您重新启动 replica_set-id,第 pods 个,此脚本将 delete/restart 按顺序 pods。
#! /bin/bash
read -p "Replicaset-id: " p
pods=$(kubectl get pods | grep "$p" | awk '{print }')
read -p "No of pods to be restarted: " n
m=0
for pod in $pods
do
((m++))
echo "$m"
kubectl delete pod "$pod"
if [[ "$m" -eq "$n" ]]; then
break
fi
done
我正在 Kubernetes 集群上 运行 开发一个应用程序。我想按顺序手动重启第n个pods。我们能做到吗? kubectl scale <options>
会在这里工作吗?
有了 replicaSet,你总是可以扩展 up/down 'N' 个 pods 的数量,这将重新启动它们,如果你需要重新启动特定的一个,只需删除它们,RS 就会启动给你一个新的。
答案是是,您可以重新启动特定部署的 10 个 pods 中的 5 个。虽然这不会是一个单一的命令。
正如您正确假设的那样 kubectl scale
会在这里帮助您。
重启 5 次 pods 10 次中包含 2 次操作:
将部署从 10 人缩减到 5 人pods
kubectl scale deployment deployment-name --replicas=5
将部署从 5 个扩展到 10 个 pods 返回:
kubectl scale deployment deployment-name --replicas=10
您也可以删除确切的 pods,kube-controller-manager
和 deployment/replicaset
控制器将确保 desired
状态与确切状态匹配,因此缺少 pods 将自动重新安排。
然而,按照最佳实践(感谢@DavidMaze),理想的情况是重新启动整个部署。这可以通过以下命令完成:
kubectl rollout restart deployment deployment-name
这是一个更安全的选项,它允许在任何 mistakes/errors 的情况下轻松回滚。
当请求 rollout restart
时,也可以在部署中逐一重启 pods。
.spec.strategy.rollingUpdate.maxUnavailable
应设置为 1
这意味着在重启期间最多只有 1 pods 不可用 - reference to max unavailable.
对于这种情况,我们也可以使用 bash 脚本。此 shell 脚本要求您重新启动 replica_set-id,第 pods 个,此脚本将 delete/restart 按顺序 pods。
#! /bin/bash
read -p "Replicaset-id: " p
pods=$(kubectl get pods | grep "$p" | awk '{print }')
read -p "No of pods to be restarted: " n
m=0
for pod in $pods
do
((m++))
echo "$m"
kubectl delete pod "$pod"
if [[ "$m" -eq "$n" ]]; then
break
fi
done