【问题标题】:Why does Kubernetes report: "configmap references non-existent config key"?为什么 Kubernetes 会报告:“configmap references non-existent config key”?
【发布时间】:2020-09-30 08:59:02
【问题描述】:

在 Kubernetes 中,我使用以下命令创建配置映射:

kubectl create configmap dd-agent-config --from-file=./kubernetes/datadog/configmap.yaml

configmap.yaml:

kind: ConfigMap
apiVersion: v1
metadata:
  name: dd-agent-config
  namespace: default
data:
  etcd: |-
    ad_identifiers:
      - etcd
    init_config:
    instances:
      - prometheus_url: "http://%%host%%:2379/metrics"
        ssl_cert: "/etc/kubernetes/pki/etcd/peer.crt"
        ssl_private_key: "/etc/kubernetes/pki/etcd/peer.key"
        ssl_ca_cert: "/etc/kubernetes/pki/etcd/ca.crt"

Kubernetes中加载的configmap的描述:

$ kubectl describe configmap dd-agent-config               
Name:         dd-agent-config
Namespace:    default
Labels:       <none>
Annotations:  <none>

Data
====
configmap.yaml:
----
kind: ConfigMap
apiVersion: v1
metadata:
  name: dd-agent-config
  namespace: default
data:
  etcd: |-
    ad_identifiers:
      - etcd
    init_config:
    instances:
      - prometheus_url: "http://%%host%%:2379/metrics"
        ssl_cert: "/etc/kubernetes/pki/etcd/peer.crt"
        ssl_private_key: "/etc/kubernetes/pki/etcd/peer.key"
        ssl_ca_cert: "/etc/kubernetes/pki/etcd/ca.crt"
Events:  <none>

我的 pod 定义:

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: datadog-agent
spec:
  selector:
    matchLabels:
      app: datadog-agent
  template:
    metadata:
      labels:
        app: datadog-agent
      name: datadog-agent
    spec:
      serviceAccountName: datadog-agent
      containers:
        - image: datadog/agent:7
          name: datadog-agent
          [...]
          volumeMounts:
            - name: confd-config
              mountPath: /conf.d/etcd.d
      volumes:
        - name: confd-config
          configMap:
            name: dd-agent-config
            items:
              - key: etcd
                path: auto_conf.yaml

不知何故,这个 pod 无法看到 configmap 键 'etcd':

$ kubectl get events 
0s          Warning   FailedMount         pod/datadog-agent-t56lp                       MountVolume.SetUp failed for volume "confd-config" : configmap references non-existent config key: etcd

Pod 保持在“ContainerCreating”状态

$ kubectl get pods
NAMESPACE     NAME                                     READY   STATUS              RESTARTS   AGE
default       datadog-agent-t56lp                      0/1     ContainerCreating   0          64s

【问题讨论】:

  • 我尝试删除 configmap 和 pod,然后重新创建它们,但这并没有解决问题。

标签: kubernetes kubernetes-pod configmap


【解决方案1】:

我发现我创建 configmap 的方式是错误的。

而不是像这样创建它:

kubectl create configmap dd-agent-config --from-file=./kubernetes/datadog/configmap.yaml

我应该这样创建它:

kubectl create -f ./kubernetes/datadog/configmap.yaml

【讨论】:

    猜你喜欢
    • 2022-01-01
    • 1970-01-01
    • 2017-04-06
    • 2021-08-04
    • 2016-07-12
    • 1970-01-01
    • 2018-01-23
    • 1970-01-01
    • 2017-03-12
    相关资源
    最近更新 更多