使用哪个 Kubernetes configmap 符号链接?

使用哪个 Kubernetes configmap 符号链接?

概括

..data应该通过符号链接还是正常路径访问 K8s 配置映射?

细节

我们通过以下方式将 configmap 附加到 pod

...
        volumeMounts:
        - mountPath: /var/opt/app_configs
          name: app-config
          readOnly: true
...
      volumes:
      - name: app-config
        configMap:
          name: app-kubernetes-configmap

然后,看起来,在 pod 中我们可以通过以下任一方式访问配置文件

  • 使用 Kubernetes 符号链接 -/var/opt/app_configs/..data/app-config.yaml
  • 配置文件的“正常”路径 -/var/opt/app_configs/app-config.yaml

有什么推荐的?

答案1

这里要寻找的主要区别是:

  • 如果ConfigMap安装subPath直到 Pod 重新启动后才会更新

  • 如果你将其作为目录挂载(不带subPath),您的容器将获得持续更新的配置文件,无需重新启动。

使用示例subPath

$ kubectl -n production exec go-conf-example-6b4cb86569-22vqv -- ls -lha /app/configfiles 
total 20K    
drwxr-xr-x    1 root     root        4.0K Mar  3 19:34 .
drwxr-xr-x    1 app      app         4.0K Mar  3 19:34 ..
-rw-r--r--    1 root     root          42 Mar  3 19:34 config.json
-rw-r--r--    1 root     root          47 Mar  3 19:34 database.yml

使用目录的示例:

$ kubectl -n production exec go-conf-example-67c768c6fc-ccpwl -- ls -lha /app/configfiles 
total 12K    
drwxrwxrwx    3 root     root        4.0K Mar  3 19:40 .
drwxr-xr-x    1 app      app         4.0K Mar  3 19:34 ..
drwxr-xr-x    2 root     root        4.0K Mar  3 19:40 ..2020_03_03_16_40_36.675612011
lrwxrwxrwx    1 root     root          31 Mar  3 19:40 ..data -> ..2020_03_03_16_40_36.675612011
lrwxrwxrwx    1 root     root          18 Mar  3 19:40 config.json -> ..data/config.json
lrwxrwxrwx    1 root     root          19 Mar  3 19:40 database.yml -> ..data/database.yml

请注意,容器内的文件实际上是一个symlink

因此,回答你的问题:

应该通过 ..data 符号链接还是通过正常路径访问 K8s 配置图?

在您的用例中,您可以在挂载目录时采用这两种方式。

我的朋友 Vitalii 也对这个话题分享了一些见解。他的回答

相关内容