json格式的Kubernetes configmap错误

时间:2018-10-03 03:19:23

标签: json kubernetes

我正在尝试将文件probes.json挂载到图像。我首先尝试通过手动指定值来创建类似于我的probes.json文件的configmap。

但是,当我应用复制器控制器时,出现错误。

我应该如何将JSON文件传递到configmap中/如何在data参数中指定值?

我尝试了以下步骤,但是出现错误。

Sheet5

Configmap:

$ cat probes.json 
[
  {
    "id": "F",
    "url": "http://frontend.stars:80/status"
  },
  {
    "id": "B",
    "url": "http://backend.stars:6379/status"
  },
  {
    "id": "C",
    "url": "http://client.stars:9000/status"
  }
]

ReplicaContainer:

apiVersion: v1
kind: ConfigMap
metadata:
  name: my-vol-config
  namespace: stars
data:
  id: F
  id: B
  id: C
  F: |
   url: http://frontend.stars:80/status
  B: |
   url: http://backend.stars:6379/status
  C: |
   url: http://client.stars:9000/status

错误:

apiVersion: v1
kind: ReplicationController
metadata:
  name: management-ui
  namespace: stars
spec:
  replicas: 1
  template:
    metadata:
      labels:
        role: management-ui
    spec:
      containers:
      - name: management-ui
        image: calico/star-collect:v0.1.0
        imagePullPolicy: Always
        ports:
        - containerPort: 9001
        volumeMounts:
          name: config-volume
        - mountPath: /star/probes.json
      volumes:
        - name: config-volume
          configMap:
             name: my-vol-config

2 个答案:

答案 0 :(得分:5)

此部分-应该与name:下第一行的volumeMounts

    volumeMounts:
      name: config-volume
    - mountPath: /star/probes.json

像这样:

    volumeMounts:
      - name: config-volume
        mountPath: /star/probes.json

答案 1 :(得分:2)

我想补充我今天学到的更多点,

使用以下代码安装文件将删除该目录下的所有文件,在本例中为容器中的星号目录。

-    volumeMounts:
      - name: config-volume
        mountPath: /star/probes.json

要解决它,我们应该使用子路径

  volumeMounts:
    - name: "config-volume"
      mountPath: "/star/probes.json"
      subPath: "probes.json"

与其摆弄如何将键值对传递到数据中,不如尝试将其作为json文件传递,并记住在创建configmap时指定名称空间

在我的示例中:我有probes.json,我试图这样传递它,而没有将每个值传递给我的数据。我使用以下命令创建了configmap

kubectl create configmap config --namespace stars --from-file calico-namespace/probes.json