秘密更新情况下的Kubernetes滚动更新
我有一个复制控制器,其中一个副本使用一个秘密。当秘密值更改时,如何使用最新的秘密值更新或重新创建其(单独的)pod而不停机 我当前的解决方法是增加Replication Controller中的副本数量,删除旧的POD,并将副本计数更改回其原始值 是否有命令或标志来引导滚动更新,保留相同的容器图像和标签?当我尝试这样做时,它会拒绝我的尝试,并显示以下消息:秘密更新情况下的Kubernetes滚动更新,kubernetes,google-kubernetes-engine,Kubernetes,Google Kubernetes Engine,我有一个复制控制器,其中一个副本使用一个秘密。当秘密值更改时,如何使用最新的秘密值更新或重新创建其(单独的)pod而不停机 我当前的解决方法是增加Replication Controller中的副本数量,删除旧的POD,并将副本计数更改回其原始值 是否有命令或标志来引导滚动更新,保留相同的容器图像和标签?当我尝试这样做时,它会拒绝我的尝试,并显示以下消息: error: Specified --image must be distinct from existing container imag
error: Specified --image must be distinct from existing container image
如果我理解正确,部署应该是您想要的 部署支持pod模板中几乎所有字段的滚动更新 请参阅几个问题,并对问题进行合理的描述,我怀疑滚动更新方法很快就会出现(就像Kubernetes中的大多数内容一样),尽管不太可能用于1.3.0。同样的问题也适用于更新ConfigMaps 每当部署吊舱规范中的任何内容发生更改时(例如,通常将
图像
更改为新版本),Kubernetes将进行滚动更新,在部署吊舱规范中设置一个env变量(例如重新启动
)
然后,当您更新机密/configmap后,在部署中增加env值(通过kubectl apply
,或patch
,或edit
),Kubernetes将启动部署的滚动更新
部署规范示例:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: test-nginx
spec:
replicas: 2
template:
metadata:
spec:
containers:
- name: nginx
image: "nginx:stable"
ports:
- containerPort: 80
- mountPath: /etc/nginx/conf.d
name: config
readOnly: true
- mountPath: /etc/nginx/auth
name: tokens
readOnly: true
env:
- name: RESTART_
value: "13"
volumes:
- name: config
configMap:
name: test-nginx-config
- name: tokens
secret:
secretName: test-nginx-tokens
两个小贴士:
- 您的环境变量名不能以
开头,否则它会以某种方式神奇地消失李>
- 如果重新启动变量使用数字,则需要将其用引号括起来