如何将 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下的文件ab,内容分别为12

一些解释: 您不需要 PVC 即可将 configmap 作为卷安装到您的 pods。 PersistentVolumeClaims 是永久驱动器,您可以读取 from/write 到。它们的用法示例是数据库,例如 Postgres。

另一方面,

ConfigMaps 是存储在 Kubernetes 中(在其 etcd 存储中)的只读键值结构,用于存储应用程序的配置。它们的值可以单独或一起作为环境变量或文件挂载。