为什么 k8s pod 在 ConfigMap 中找不到 key?

Nat*_*eed 2 kubernetes

我在使用 ConfigMap 的 Kubernetes Pod 时遇到问题。我的 Pod 无法启动,出现以下错误:

Warning Failed 10s (x7 over 2m16s) kubelet, docker-desktop Error: Couldn't find key URL in ConfigMap default/env-config

我创建了 ConfigMap,如下所示:

kubectl create configmap env-config --from-file env-config.yaml

这是我的配置图:

NAME         DATA   AGE
env-config   1      5m38s
Nates-MacBook-Pro:k8s natereed$ kubectl describe configmap env-config
Name:         env-config
Namespace:    default
Labels:       <none>
Annotations:  <none>

Data
====
env-config.yaml:
----
apiVersion: v1
kind: ConfigMap
data:
  AWS_BUCKET: mybucket
  AWS_PROFILE: dev
  AWS_REGION: us-east-2
  JWT_SECRET: foo
  POSTGRESS_DB: <mydb>
  POSTGRESS_HOST: <my host>
  URL: http://localhost:8100  
metadata:
  name: env-config
Run Code Online (Sandbox Code Playgroud)

看起来创建 ConfigMap 的命令是错误的?我不清楚为什么它创建一个带有单个键“env-config.yaml”的映射。

YAML 文件如下所示:

apiVersion: v1
kind: ConfigMap
data:
  AWS_BUCKET: mybucket
  AWS_PROFILE: dev
  AWS_REGION: us-east-2
  JWT_SECRET: foo
  POSTGRESS_DB: mydb
  POSTGRESS_HOST: postgreshost
  URL: http://localhost:8100  
metadata:
  name: env-config
  namespace: default
Run Code Online (Sandbox Code Playgroud)

Jul*_*sta 11

我想说出现这个问题是因为您将 ConfigMap yaml 定义作为 的参数传递--from-file

您可以简单地使用以下方法创建它: kubectl create -f env-config.yaml

除此之外,如果您想使用创建--from-file,那么您可以仅使用您需要的参数来定义文件,如下所示:

文件名:env-config

AWS_PROFILE: dev
AWS_REGION: us-east-2
JWT_SECRET: foo
POSTGRESS_DB: <mydb>
POSTGRESS_HOST: <my host>
URL: http://localhost:8100
Run Code Online (Sandbox Code Playgroud)

然后您可以按照之前的方式创建 ConfigMap:

kubectl create configmap env-config --from-file env-config

这将创建一个像这样的 ConfigMap:( kubectl describe configmap env-config)

Namespace:    default
Labels:       <none>
Annotations:  <none>

Data
====
env-config:
----
AWS_BUCKET: mybucket
AWS_PROFILE: dev
AWS_REGION: us-east-2
JWT_SECRET: foo
POSTGRESS_DB: <mydb>
POSTGRESS_HOST: <my host>
URL: http://localhost:8100

Events:  <none>
Run Code Online (Sandbox Code Playgroud)

在这里您可以找到一些有用的信息:

从文件创建 ConfigMap

使用 ConfigMap 数据定义容器环境变量