kubernetes - 在 K8s 中重启 n 个 pod
问题描述
我正在开发一个在 Kubernetes 集群上运行的应用程序。我想按顺序手动重新启动 n 个 pod。我们可以这样做吗?会kubectl scale <options>
在这里工作吗?
解决方案
答案是肯定的,您可以重新启动特定部署的 10 个 Pod 中的 5 个。虽然这不会是一个单一的命令。
正如您正确假设的那样,kubectl scale
它将在这里为您提供帮助。
重新启动 10 个 Pod 中的 5 个包含 2 个操作:
将部署从 10 个 pod 缩减到 5 个
kubectl scale deployment deployment-name --replicas=5
将部署从 5 个 Pod 扩大到 10 个:
kubectl scale deployment deployment-name --replicas=10
您还可以删除确切的 Pod,kube-controller-manager
其中的deployment/replicaset
控制器将确保desired
状态与确切的状态匹配,因此丢失的 Pod 将自动重新调度。
但是遵循最佳实践(感谢@DavidMaze),理想的情况是重新启动整个部署。这可以通过以下命令完成:
kubectl rollout restart deployment deployment-name
这是更安全的选择,它允许在出现任何错误/错误的情况下轻松回滚。
也可以在rollout restart
请求时在部署中逐个重新启动 pod。
.spec.strategy.rollingUpdate.maxUnavailable
应该设置为1
这意味着在重新启动期间最多只有 1 个 pod 不可用 -参考最大不可用。
推荐阅读
- python-3.x - 如何将“conftest,py”中的参数传递给测试文件(pytest)?
- django - 在使用 django_celery_beat 设置的 Django 视图中使用 Celery 定期任务输出,并使用 Redis 设置缓存
- c# - 移除按钮的内框
- types - 从没有泛型参数的函数返回泛型类型
- php - 使用 Composer 的 PSR-4 Autoloader 问题
- python - 如何将 matplotlib 补丁定位在轴范围之外(以便它可以位于标题、图例或图形上的任何位置旁边)
- html - 如何在浮动 div 下移动 div
- android - 将 Enum 添加为 Room 数据库列类型
- ios - 您可以将 UIView 添加到 UIStackview 吗?
- php - 使 Cakephp 网址对 SEO 更友好