【发布时间】:2019-10-11 00:23:44
【问题描述】:
我正在努力在 kubernetes 中部署 docker 映像。第一次部署容器时,我使用了:
kubectl apply -f <deployment_file>.yaml
并且容器已成功部署在 pod 中。
此外,deployment_file 看起来像这样:
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: publisher
spec:
replicas: 2
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
minReadySeconds: 300
progressDeadlineSeconds: 900
template:
metadata:
labels:
app: publisher
spec:
containers:
- name: publisher
image: 123dev.azurecr.io/publisher:{{ci-build-number}}
env:
- name: ENVIRONMENT
value: "dev"
ports:
- containerPort: 8080
我已经在上面的 yaml 文件中定义了 'progressDeadlineSeconds' 属性。
为了跟踪部署,我使用了:
kubectl rollout status deployment.v1beta1.apps/publisher
现在如果我想用新图像更新容器,我可以再次重复使用该命令
kubectl apply -f <deployment_file>.yaml
应用更新。
但是如果由于某种原因应用更新失败(假设 docker 映像已损坏),有没有办法自动触发回滚到以前的版本 - pod 状态未设置为“正在运行”或执行时间跨过“pregressDeadlineSeconds”?
到目前为止,我还没有找到一种自动执行回滚的方法。想法将不胜感激。
【问题讨论】:
标签: docker kubernetes azure-aks