K8S ConfigMap Hot Reload 研究

前言

我们可以通过将ConfigMap以Volume的形式Mount到Pod内,然后通过动态更新 ConfigMap,让Pod 热加载 修改过后的配置文件,达到动态配置的目的。但是需要注意的是:ConfigMap默认会以目录的形式挂载进Pod内,这种情况下,ConfigMap更新后,K8S 会自动将新的配置同步进Pod内,但是如果通过SubPath将ConfigMap以单个文件的形式挂载进Pod内,却不会出现同步更新的情况。

参见:Configure a Pod to Use a ConfigMap

K8S ConfigMap Hot Reload 研究_第1张图片

针对这个情况,我们可以做如下测试:

探索

  1. 准备cm-test.yml文件,配置如下
apiVersion: v1
kind: ConfigMap
metadata:
  name: config-map
  namespace: default
data:
  config-dir.yml: |+
    this config mount by dir!
  config-file.yml: |+
    this config mount by file!
---
apiVersion: v1
kind: Pod
metadata:
  name: ubuntu
  namespace: default
spec:
  containers:
  - name: ubuntu
    image: ubuntu
    command: [ "/bin/bash","-c","while true;do echo hello docker ;sleep 10 ;done" ]
    volumeMounts:
    - name: config-dir
      mountPath: /etc/config-dir
    - name: config-file
      mountPath: /etc/config-file/config-file.yml
      subPath: config-file.yml
  volumes:
    - name: config-dir
      configMap:
        name: config-map
        items:
        - key: config-dir.yml
          path: config-dir.yml
    - name: config-file
      configMap:
        name: config-map
        items:
        - key: config-file.yml
          path: config-file.yml
  1. 执行 k apply -f cm-test.yml 部署到k8s 环境 K8S ConfigMap Hot Reload 研究_第2张图片

  2. 执行k exec -it ubuntu /bin/bash 进入 Pod 查看结果,可以看到配置已经被正确挂载进Pod内了 K8S ConfigMap Hot Reload 研究_第3张图片

  3. 分别执行ls -al /etc/config-dir/ls -al /etc/config-file/查看两个目录的结构

    “/etc/config-dir/”目录结构: K8S ConfigMap Hot Reload 研究_第4张图片

    “/etc/config-file/”目录结构: K8S ConfigMap Hot Reload 研究_第5张图片

    可以发现 以目录形式挂载到Pod内的config-dir下面有两个被隐藏的目录链接

  4. 更新 config-map 并 apply,等待更新被同步到Pod后,再分别查看结果,可以看到 config-dir.yml 被更新了,而 config-file.yml 并没有发生改变

    修改config-map: K8S ConfigMap Hot Reload 研究_第6张图片

    查看 更新结果: K8S ConfigMap Hot Reload 研究_第7张图片

  5. 再次执行ls -al /etc/config-dir/ls -al /etc/config-file/查看两个目录的结构,可以看到 config-dir 的隐藏目录链接已经发生了改变,也就是说配置文件的真实路径发生了变化

    K8S ConfigMap Hot Reload 研究_第8张图片

转载于:https://my.oschina.net/sumier/blog/3014716

你可能感兴趣的:(K8S ConfigMap Hot Reload 研究)