如何将 configMap 挂载为有状态集中的卷挂载
How to mount a configMap as a volume mount in a Stateful Set
我没有看到在 statefulset 中将 configMap 挂载为卷的选项,根据 https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.17/#statefulset-v1-apps 只有 PVC 可以与 "StatefulSet" 关联。但是PVC没有configMaps的选项。
这是一个最小的例子:
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: example
spec:
selector:
matchLabels:
app: example
serviceName: example
template:
metadata:
labels:
app: example
spec:
containers:
- name: example
image: nginx:stable-alpine
volumeMounts:
- mountPath: /config
name: example-config
volumes:
- name: example-config
configMap:
name: example-configmap
---
apiVersion: v1
kind: ConfigMap
metadata:
name: example-configmap
data:
a: "1"
b: "2"
在容器中,可以找到/config
下的文件a
和b
,内容分别为1
和2
。
一些解释:
您不需要 PVC 即可将 configmap 作为卷安装到您的 pods。 PersistentVolumeClaim
s 是永久驱动器,您可以读取 from/write 到。它们的用法示例是数据库,例如 Postgres。
另一方面,ConfigMap
s 是存储在 Kubernetes 中(在其 etcd 存储中)的只读键值结构,用于存储应用程序的配置。它们的值可以单独或一起作为环境变量或文件挂载。
我没有看到在 statefulset 中将 configMap 挂载为卷的选项,根据 https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.17/#statefulset-v1-apps 只有 PVC 可以与 "StatefulSet" 关联。但是PVC没有configMaps的选项。
这是一个最小的例子:
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: example
spec:
selector:
matchLabels:
app: example
serviceName: example
template:
metadata:
labels:
app: example
spec:
containers:
- name: example
image: nginx:stable-alpine
volumeMounts:
- mountPath: /config
name: example-config
volumes:
- name: example-config
configMap:
name: example-configmap
---
apiVersion: v1
kind: ConfigMap
metadata:
name: example-configmap
data:
a: "1"
b: "2"
在容器中,可以找到/config
下的文件a
和b
,内容分别为1
和2
。
一些解释:
您不需要 PVC 即可将 configmap 作为卷安装到您的 pods。 PersistentVolumeClaim
s 是永久驱动器,您可以读取 from/write 到。它们的用法示例是数据库,例如 Postgres。
ConfigMap
s 是存储在 Kubernetes 中(在其 etcd 存储中)的只读键值结构,用于存储应用程序的配置。它们的值可以单独或一起作为环境变量或文件挂载。