如何在不更改Kubernetes中的部署Yaml的情况下滚动重启Pod?

mur*_*vus 7 kubernetes

在kubernetes中有一个滚动更新(自动没有停机时间),但是没有滚动重启,至少我找不到。我们必须更改部署Yaml。有没有办法使滚动“重启”,最好不更改部署yaml?

str*_*ius 7

在kubernetes 1.15之前,答案是否定的。但是有一种使用虚拟注释修补部署规范的解决方法:

kubectl patch deployment web -p \
  "{\"spec\":{\"template\":{\"metadata\":{\"annotations\":{\"date\":\"`date +'%s'`\"}}}}}"
Run Code Online (Sandbox Code Playgroud)

从kubernetes 1.15开始,您可以使用:

kubectl rollout restart deployment your_deployment_name
Run Code Online (Sandbox Code Playgroud)

CLI的改进

  • 创建了一个新kubectl rollout restart命令,该命令可滚动重启部署。
  • kubectl rollout restart 现在适用于DaemonSet和StatefulSet

  • (“kubectl rollout restart”通过更改部署的 Pod 规范上的注释来工作,因此它没有任何集群端依赖项;您可以将它用于较旧的 Kubernetes 集群。) (20认同)
  • @B.Stucke,您可以在终止前使用“terminationGracePeriodSeconds”来耗尽目的。但我认为您首先需要设置“readinessProbe”来检查配置是否已加载。 (3认同)
  • @NielsBasjes 是的,您可以将 kubectl 1.15 与 apiserver 1.14 一起使用。以下是有关 kubernetes 版本偏差策略的更多详细信息:https://kubernetes.io/docs/setup/release/version-skew-policy/ (2认同)