我在使用 ConfigMap 的 Kubernetes pod 上遇到问题。我的 pod 无法启动,出现以下错误:
警告失败 10s(x7 超过 2m16s)kubelet,docker-desktop 错误:无法在 ConfigMap default/env-config 中找到关键 URL
我按如下方式创建了我的 ConfigMap:
kubectl create configmap env-config --from-file env-config.yaml
这是我的 ConfigMap:
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
看起来创建 ConfigMap 的命令有误?我不清楚为什么它使用单个键“env-config.yaml”创建 map 。
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
最佳答案
我会说出现问题是因为您将 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
然后您可以按照之前的方式创建 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>
在这里您可以找到一些有用的信息:
关于kubernetes - 为什么 k8s pod 在 ConfigMap 中找不到 key?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60821970/