我有一个复制控制器,其中一个副本使用密钥。如何在更改密码值时更新或重新创建其(单独)pod - 无需停机 - 使用最新密码值?
我目前的解决方法是增加复制控制器中的副本数量,删除旧容器以及将副本计数更改回其原始值。
是否有一个命令或标志来引发滚动更新,保留相同的容器图像和标记?当我尝试这样做时,它会拒绝我的尝试,并发出以下消息:
error: Specified --image must be distinct from existing container image
答案 0 :(得分:3)
有几个问题#9043和#13488合理地描述了这个问题,我怀疑滚动更新方法很快就会出现(就像Kubernetes中的大多数事情一样),尽管不太可能是1.3.0。同样的问题适用于更新ConfigMaps。
当部署pod规范中的任何内容发生更改时(例如,通常为image
到新版本),Kubernetes将执行滚动更新,因此one suggested workaround将在部署pod规范中设置env变量(例如RESTART_
)
然后,当您更新了秘密/配置图时,在部署中(通过kubectl apply
或patch
或edit
)突破env值,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
两个提示:
_
开头,否则会以某种方式神奇地消失。 答案 1 :(得分:0)