Kubernetes:挂载的文件是一个...目录?
Kubernetes: mounted file is a... directory?
我创建了一个机密,当我部署一个旨在读取该机密的应用程序时,该应用程序抱怨该机密是一个目录。
我做错了什么?该文件旨在作为文件读取。
kc logs <pod>
(error) /var/config/my-file.yaml: is a directory.
秘密是这样创建的。
kubectl create secret generic my-file.yaml --from-file=my-file.yaml
这是部署。
apiVersion: apps/v1
kind: Deployment
metadata:
name: a-name
spec:
replicas: 1
selector:
matchLabels:
name: a-name
template:
metadata:
labels:
name: a-name
spec:
volumes:
- name: my-secret-volume
secret:
secretName: my-file.yaml
containers:
- name: a-name
image: test/image:v1.0.0
volumeMounts:
- name: my-secret-volume
mountPath: /var/config/my-file.yaml
subPath: my-file.yaml
readOnly: true
ports:
- containerPort: 1234
- containerPort: 5678
imagePullPolicy: Always
args:
- run
- --config
- /var/config/my-file.yaml
revisionHistoryLimit: 1
您在卷装载部分使用 subPath
。根据 Kubernetes volume doc,当您需要在同一个 pod 中为不同目的使用相同的卷时,您应该使用 subPath
.
但这里您使用的卷仅供单次使用。但我会给你两个带有 subPath 和不带 subPath 的 yaml 文件。
有子路径
volumeMounts:
- name: my-secret-volume
mountPath: /var/config
subPath: config
readOnly: true
WithOut 子路径
volumeMounts:
- name: my-secret-volume
mountPath: /var/config
readOnly: true
清单文件的其余部分在两种情况下都是相同的。
我创建了一个机密,当我部署一个旨在读取该机密的应用程序时,该应用程序抱怨该机密是一个目录。
我做错了什么?该文件旨在作为文件读取。
kc logs <pod>
(error) /var/config/my-file.yaml: is a directory.
秘密是这样创建的。
kubectl create secret generic my-file.yaml --from-file=my-file.yaml
这是部署。
apiVersion: apps/v1
kind: Deployment
metadata:
name: a-name
spec:
replicas: 1
selector:
matchLabels:
name: a-name
template:
metadata:
labels:
name: a-name
spec:
volumes:
- name: my-secret-volume
secret:
secretName: my-file.yaml
containers:
- name: a-name
image: test/image:v1.0.0
volumeMounts:
- name: my-secret-volume
mountPath: /var/config/my-file.yaml
subPath: my-file.yaml
readOnly: true
ports:
- containerPort: 1234
- containerPort: 5678
imagePullPolicy: Always
args:
- run
- --config
- /var/config/my-file.yaml
revisionHistoryLimit: 1
您在卷装载部分使用 subPath
。根据 Kubernetes volume doc,当您需要在同一个 pod 中为不同目的使用相同的卷时,您应该使用 subPath
.
但这里您使用的卷仅供单次使用。但我会给你两个带有 subPath 和不带 subPath 的 yaml 文件。
有子路径
volumeMounts:
- name: my-secret-volume
mountPath: /var/config
subPath: config
readOnly: true
WithOut 子路径
volumeMounts:
- name: my-secret-volume
mountPath: /var/config
readOnly: true
清单文件的其余部分在两种情况下都是相同的。