Omr*_*tix 14 kubernetes kubectl
Currenly在更新kubernetes secrets文件时,为了应用更改,我需要运行kubectl apply -f my-secrets.yaml.如果有一个正在运行的容器,它仍将使用旧的秘密.为了在正在运行的容器上应用新的秘密,我目前运行该命令kubectl replace -f my-pod.yaml.我想知道这是否是更新正在运行的容器秘密的最佳方式,或者我错过了什么.
谢谢.
vic*_*rtv 23
对于 k8s 版本 >v1.15::kubectl rollout restart deployment $deploymentname这将逐步重启 pod,而不会导致停机。
xh3*_*4sd 15
用户的秘密文档说:
已安装的密钥会自动更新当更新卷中已使用的密钥时,最终也会更新预计的密钥.更新时间取决于kubelet同步周期.
已安装的机密信息已更新.问题是什么时候.如果更新机密内容并不意味着您的应用程序会自动使用它.应用程序的工作是在此方案中观察文件更改以采取相应措施.记住这一点,你现在需要做更多的工作.我现在想到的一种方法是在Kubernetes中运行一个预定的工作,该工作与Kubernetes API进行对话,以启动部署的新部署.这样你理论上可以实现你想要更新你的秘密.它在某种程度上并不优雅,但这是我此刻想到的唯一方式.我仍然需要自己检查更多关于Kubernetes概念的内容.所以请耐心等待.
小智 9
假设我们已经运行pod mypod [装载密码作为pod规范中的mysecret]
我们可以删除现有的秘密
kubectl delete secret mysecret
Run Code Online (Sandbox Code Playgroud)
使用更新的文件重新创建相同的秘密
kubectl create secret mysecret <updated file/s>
Run Code Online (Sandbox Code Playgroud)
然后做
kubectl apply -f ./mypod.yaml
Run Code Online (Sandbox Code Playgroud)
检查mypod里面的秘密,它会被更新.
如果有人(像我一样)想要强制滚动更新正在使用这些秘密的 Pod。从这个问题来看,技巧是更新容器内的Env变量,然后k8s将自动滚动更新整个pod
kubectl patch deployment mydeployment -p '{"spec":{"template":{"spec":{"containers":[{"name":"mycontainer","env":[{"name":"RESTART_","value":"'$(date +%s)'"}]}]}}}}'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21236 次 |
| 最近记录: |