为什么Kubernetes Pod无法从ConfigMap中获取到已配置的环境变量?
问题核心原因
你编写的带ConfigMap引用的是独立Pod的配置,但实际集群中运行的Pod是由Deployment控制创建的,你没有将envFrom的ConfigMap引用配置写到Deployment的Pod模板中,所以Deployment每次生成的Pod都不会加载对应的环境变量,你手动删除旧Pod后重建出来的新Pod依然是不带配置的。
解决步骤
- 找到你的Deployment配置文件,在
spec.template.spec.containers字段下添加ConfigMap引用配置,示例如下:
apiVersion: apps/v1 kind: Deployment metadata: name: web-deployment spec: replicas: 1 selector: matchLabels: app: web-pod template: metadata: labels: app: web-pod service: web-service spec: containers: - name: web image: kahunacohen/hello-kube:latest # 新增以下ConfigMap引用配置 envFrom: - configMapRef: name: web-configmap ports: - containerPort: 3000
- 执行命令更新Deployment:
kubectl apply -f <你的Deployment配置文件路径> - 等待Deployment自动滚动重建Pod,新启动的Pod就会正确加载ConfigMap中的环境变量,此时再访问服务、或者执行
kubectl exec查看环境变量就能看到对应配置值。
内容的提问来源于stack exchange,提问作者Aaron
相关产品推荐
相关产品推荐

