【发布时间】: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