kubectl set image deployments/common-uat uat-common=registry.cn-hangzhou.aliyuncs.com/mx_586/common_uat:$DID执行这条命令回去更新pod,怎么让新的pod没有完全启动之前不删除旧的pod,等新的pod完全启动之后再去删除旧的pod
时间: 2024-04-05 12:34:25 浏览: 88
可以通过设置 `rollingUpdate` 策略的 `minReadySeconds` 参数来实现这个需求。具体步骤如下:
1. 执行 `kubectl edit deployment common-uat` 命令编辑 Deployment 的配置文件。
2. 在配置文件的 `spec.strategy.rollingUpdate` 字段中添加一个 `minReadySeconds` 参数,比如设置为 `minReadySeconds: 60`,表示新的 Pod 至少需要运行 60 秒后才会将旧的 Pod 删除。
3. 保存配置文件并退出编辑器。
现在,当执行 `kubectl set image deployments/common-uat uat-common=registry.cn-hangzhou.aliyuncs.com/mx_586/common_uat:$DID` 命令更新 Deployment 时,Kubernetes 会按照 `rollingUpdate` 策略进行滚动更新,新的 Pod 会在启动后等待 `minReadySeconds` 参数指定的时间,然后才会将旧的 Pod 删除。这样就可以保证新的 Pod 已经完全启动并运行正常后再删除旧的 Pod,避免因为旧的 Pod 还在运行而导致服务中断的情况。
相关问题
这条命令是什么意思:kubectl set image deployments/common-uat uat-common=registry.cn-hangzhou.aliyuncs.com/mx_586/common_uat:$DID
这是一个使用 Kubernetes 的命令,其中:
- `kubectl` 是 Kubernetes 的命令行工具;
- `set image` 是命令的子命令,用于更新容器镜像;
- `deployments/common-uat` 是要更新的 Deployment(部署)的名称;
- `uat-common` 是 Deployment 中容器的名称;
- `registry.cn-hangzhou.aliyuncs.com/mx_586/common_uat:$DID` 是新的容器镜像地址和版本号,其中 `$DID` 是一个变量,表示版本号。
这个命令的作用是将 Deployment `common-uat` 中的容器 `uat-common` 的镜像更新为 `registry.cn-hangzhou.aliyuncs.com/mx_586/common_uat` 的指定版本。
kubectl set image deployments/common-uat uat-common=registry.cn-hangzhou.aliyuncs.com/mx_586/common_uat:$DID这条命令会更新pod,但是会先删除旧pod,怎么能让他先完全启动后才删除旧pod
你可以使用`kubectl rollout`命令来实现滚动更新,它会先启动新的Pod,确认新的Pod正常运行后,再逐步停止旧的Pod。
具体的操作步骤如下:
1. 首先,使用`kubectl set image`命令来更新镜像:
```
kubectl set image deployments/common-uat uat-common=registry.cn-hangzhou.aliyuncs.com/mx_586/common_uat:$DID
```
2. 然后,使用`kubectl rollout status`命令来确认新的Pod已经正常运行:
```
kubectl rollout status deployments/common-uat
```
这个命令会一直等待,直到新的Pod变成`Running`状态。
3. 最后,使用`kubectl rollout undo`命令来回滚到旧的版本:
```
kubectl rollout undo deployments/common-uat
```
这个命令会逐步停止新的Pod,同时启动旧的Pod,直到所有旧的Pod都重新启动。
阅读全文