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

标签 kubernetes

我在使用 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>

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

Create ConfigMaps from files

Define container environment variables using ConfigMap data

关于kubernetes - 为什么 k8s pod 在 ConfigMap 中找不到 key?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60821970/

相关文章:

azure - aks-engine 无法创建内部负载均衡器

kubernetes - 如果 Kubernetes 命名空间不存在,如何创建它?

spring-boot - openshift 中用于 spring boot 微服务的 api 网关

docker - Istio 与 Traefik 相比如何?

kubernetes - 如何从 Kubernetes Helm 函数返回复杂(dict)值?

azure - 更改 Kubernetes Pod 日志记录

kubernetes - 具有多个后端服务的 GKE Ingress 返回 404

kubernetes - GCP GKE负载平衡器连接被拒绝

docker - Kubernetes YAML是否在同一个Pod中部署了多个镜像?

kubernetes - 如何让两个 Kubernetes 服务相互通信?