k8s:configmap 安装在“..data”目录的符号链接内

Jor*_*rdi 14 kubernetes

这是我的volumeMount

volumeMounts:
- name: interpreter-spec-volume
  mountPath: /zeppelin/k8s/interpreter
Run Code Online (Sandbox Code Playgroud)

这是我的卷:

volumes:
- name: interpreter-spec-volume
  configMap:
    name: zeppelin-files
    items:
      - key: interpreter-spec.yaml
        path: interpreter-spec.yaml
Run Code Online (Sandbox Code Playgroud)

如何安装卷会出现问题。我的volumeMount安装为:

kubectl exec -ti zeppelin-759db57cb6-xw42b -- ls -la /zeppelin/k8s/interpreter
total 0
drwxrwxrwx. 3 root root 88 Jul  7 13:18 .
drwxr-xr-x. 3 root root 53 Jun  8 12:12 ..
drwxr-xr-x. 2 root root 35 Jul  7 13:18 ..2020_07_07_13_18_32.149716995
lrwxrwxrwx. 1 root root 31 Jul  7 13:18 ..data -> ..2020_07_07_13_18_32.149716995
lrwxrwxrwx. 1 root root 28 Jul  7 13:18 interpreter-spec.yaml -> ..data/interpreter-spec.yaml
Run Code Online (Sandbox Code Playgroud)

为什么它的安装..data目录是自己的?

Vit*_*Vit 14

我能说什么 - 这几乎没有记录预期行为。这是由于秘密和配置映射如何安装到正在运行的容器中。

当您将 Secret 或 configmap 作为卷挂载时,Kubernetes 将挂载它的路径将包含将相同名称符号链接到 ..data 目录的根级别项,该目录是到真实挂载点的符号链接。

例如,

kubectl exec -ti zeppelin-759db57cb6-xw42b -- ls -la /zeppelin/k8s/interpreter
total 0
drwxrwxrwx. 3 root root 88 Jul  7 13:18 .
drwxr-xr-x. 3 root root 53 Jun  8 12:12 ..
drwxr-xr-x. 2 root root 35 Jul  7 13:18 ..2020_07_07_13_18_32.149716995
lrwxrwxrwx. 1 root root 31 Jul  7 13:18 ..data -> ..2020_07_07_13_18_32.149716995
lrwxrwxrwx. 1 root root 28 Jul  7 13:18 interpreter-spec.yaml -> ..data/interpreter-spec.yaml
Run Code Online (Sandbox Code Playgroud)

真正的挂载点(上例中的..2020_07_07_13_18_32.149716995)将在每次更新秘密或configmap(在您的情况下)时发生变化,因此您的interpreter-spec.yaml的真实路径将在每次更新后发生变化。

您可以做的是使用中的子路径选项volumeMounts根据设计,使用机密和配置映射作为子路径卷挂载的容器将不会接收更新。您可以利用此功能来单独挂载文件。每次在秘密/配置映射中添加/删除任何文件时,您都需要更改 Pod 规范,并且每次秘密/配置映射更新后都需要部署部署来应用更改。

volumeMounts:
- name: interpreter-spec-volume
  mountPath: /zeppelin/k8s/interpreter
  subPath: interpreter-spec.yaml

volumes:
- name: interpreter-spec-volume
  configMap:
    name: zeppelin-files
Run Code Online (Sandbox Code Playgroud)

我还想提一下Kubernetes 配置映射符号链接 (..data/) :有没有办法避免它们?在这里提问,您可以在其中找到更多信息。