kubernetes 使用 REST API 重新启动所有 Pod



我需要更新所有 pod(滚动更新(,并更改 env 变量

我不是在使用 kubectl,而是在使用 REST api。

对不,我正在删除服务和 pod;然后重新创建服务和 Pod。(通常需要大约几分钟,并且有停机时间(。想要类似于滚动更新,没有停机时间。

如果要重新启动附加到部署的所有 pod,则可以通过运行

$ curl -k --data '{"spec":{"template":{"metadata":{"annotations":{"kubectl.kubrnetes.io/restartedAt":"'"$(date +%Y-%m-%dT%T%z)"'"}}}}}' -XPATCH   -H "Accept: application/json, */*" -H "Content-Type: application/strategic-merge-patch+json" localhost:8001/apis/extensions/v1beta1/namespaces/default/deployments/mydeployment

使用部署而不是 Pod。

部署有DeploymentStrategymaxUnavailable、maxSurge 等,使用它可以实现零停机升级。

要更改环境,只需将其更改为部署yaml并将其应用于群集即可。它将在没有任何停机时间的情况下推出部署。

Kubectl 内部调用 Kubernetes API Server 公开的 rest api。您可以通过增加详细程度来检查 kubectl 发送的 rest 调用。一旦你知道其余的 api 被调用,你也可以调用这些 api。

kubectl rollout restart deployment/frontend -v=10

最新更新