【问题标题】:Unable to mount Kubernetes Secret as a File in Pod无法将 Kubernetes Secret 挂载为 Pod 中的文件
【发布时间】:2018-03-30 21:18:41
【问题描述】:

我正在尝试将作为机密创建的配置文件挂载到 pod 中的特定路径。但是,pod 上的挂载路径始终生成为目录。有人可以告诉我我做错了什么吗?

> kubectl get secrets config
NAME      TYPE      DATA      AGE
config    Opaque    1         29m

pod yaml:

apiVersion: v1
kind: Pod
metadata:
  name: test-pd-plus-secret
spec:
  containers:
  - image: ubuntu
    name: bash
    stdin: true
    tty: true
    volumeMounts:
      - name: "config"
        mountPath: "/mnt/configFile"
        subPath: "configFile"
  volumes:
  - name: "config"
    secret:
      secretName: "config"

pod创建完成后,尝试读取pod上的文件,得到:

cat: /mnt/configFile: Is a directory

我正在使用:kubernetes 客户端版本 1.9.0 和服务器版本 1.8.6

【问题讨论】:

  • 您是否尝试过在没有挂载的情况下运行 pod 并检查 /mnt/configFile 是否存在(如果存在,它是文件还是目录)?如果它作为目录存在,那么这就解释了为什么你不能在它上面挂载文件。如果它作为文件存在或不存在,那么据我所知,您应该能够在其上挂载文件,并且我认为您所做的应该可以工作。

标签: kubernetes kubernetes-secrets


【解决方案1】:

您想要的语法是只选择秘密的items:,而不是尝试以这种方式使用subPath。我是documented in SecretVolumeSource

  volumes:
  - name: config
    secret:
      secretName: config
      items:
      - key: configFile
        path: configFile

【讨论】:

  • 我不确定我是否没有充分阐明上下文,或者我仍然对您的答案感到困惑。我试图作为文件挂载的秘密是一个实际文件,它应该存在于 pod 文件系统的特定路径上。该文件的内容包含许多配置键值对。我确实尝试了您建议的代码 sn-p:我删除了 pod 的 volumeMounts 规范中的 subPath 条目,并像您说的那样创建了卷。但是,现在我的 pod 只是卡在了 ContainerCreating 循环中。另外,您指向的文档似乎是v1.10,我使用的是k8s 1.8(服务器)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-22
  • 2016-12-24
  • 2020-12-07
  • 1970-01-01
  • 2019-07-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多