无法将Kubernetes Secret装载为Pod中的文件

无法将Kubernetes Secret装载为Pod中的文件,kubernetes,kubernetes-secrets,Kubernetes,Kubernetes Secrets,我正在尝试将一个作为机密创建的配置文件装载到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: c

我正在尝试将一个作为机密创建的配置文件装载到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文件系统的特定路径上。该文件的内容包含许多配置键值对。我确实尝试了您建议的代码片段:我删除了pod的volumeMounts规范中的子路径条目,并按照您所说的创建了卷。然而,现在我的吊舱被困在一个集装箱制造循环中。另外,您提到的文档似乎是v1.10,我使用的是k8s 1.8(服务器)。您是否尝试过在没有装载的情况下运行pod,并检查
/mnt/configFile
是否存在(如果存在,它是文件还是目录)?如果它作为目录存在,那么这就解释了为什么不能在它上面挂载文件。如果它以文件的形式存在,或者它不存在,那么就我所知,您应该能够在它上面挂载一个文件,我认为您所做的应该是可行的。
  volumes:
  - name: config
    secret:
      secretName: config
      items:
      - key: configFile
        path: configFile