Kubernetes
要使用哪個 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
推薦什麼?
在這裡尋找的主要區別是:
- 如果使用
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 也通過他的回答分享了一些關於這個話題的觀點。