kubernetes-在更新configMap后,让pod识别confMap的var更新(kustomize)

在kubernetes中,更新configMap后,pod是不会自动识别configMap中的变动。

configMap更新后,如果想使pod中引用configMap的变量生效,
通常简单的做法是:

方法1. 删除该pod,让其自动产生一份新的pod.
方法2. 修改pod的配置,让其自动产生一份新的pod.
方法3. 增加一个sidecar,让其监控configMap的变化,来重启pod.

下面我们通过修改deployment中的annotations方法来实现剩下pod:
我们使用kustomize 来做试验(如果你没loadBalance,修改改为nodePort方式访问),项目地址:https://github.com/kubernetes-sigs/kustomize/tree/master/examples/helloWorld

一、部署项目:

$ kubectl apply -k .

二、检查运行pod状况

$ curl 192.168.0.7:8666/
<html><body>
Version 1 : Good Morning ! 
</body></html>

三、修改configMap
3.1 这里我们修改: altGreeting的值

$ cat configMap.yaml 
apiVersion: v1
kind: ConfigMap
metadata:
  name: the-map
data:
  altGreeting: "Good Morning 3!"
  enableRisky: "false"

3.2 修改kustomization.yaml
这里我们增加一个键值 commonAnnotations-->version

commonLabels:
  app: hello

commonAnnotations:
  version: 1.0.1

resources:
- deployment.yaml
- service.yaml
- configMap.yaml

四、再次重新发布

$ kubectl apply -k .

五、检查运行pod状况

$ curl 192.168.0.7:8666/
<html><body>
Version 1 : Good Morning 3! 
</body></html>

可见,我们改过了configMap中的key-value的值后,在pod已经生效了。

原理就是:通过更新deployment中的Annotations,增加一个version的key,每次需要更新configMap,只要upgrade一次kustomization.yaml中的commonAnnotations->version的值,发布后,pod就会自动重建一次,以此来发现confiMap的新值。

其他方法:

利用sidecar方法:https://github.com/jimmidyson/configmap-reload (prometheus helm 就是使用此方法)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值