AKS中通过YAML创建Deployment遇CreateContainerConfigError求助
解决AKS中Deployment的CreateContainerConfigError问题
核心问题分析
你当前的配置存在两个关键错误:
- ConfigMap与Deployment引用不匹配:你的ConfigMap把所有环境变量打包在
.env这一个key里,但Deployment却直接引用CONTAINER_ID等独立key——这些key在ConfigMap中根本不存在,这是触发CreateContainerConfigError的主要原因。 - Deployment笔误:
COSMOS_KEY对应的configMapKeyRef.key写成了DATABASE_ID,属于错误引用。
解决方案一:挂载ConfigMap为.env文件(贴合Node.js应用习惯)
如果你的Node.js应用依赖.env文件读取配置,直接将ConfigMap挂载到应用的.env路径即可:
保持现有ConfigMap不变
kind: ConfigMap metadata: name: catsapi-env namespace: catsapi data: .env: | CONTAINER_ID= <COSMOS_CONTAINER> COSMOS_ENDPOINT= <COSMOS_ENDPOINT> COSMOS_KEY= <COSMOS_KEY> DATABASE_ID= <DATABASE_ID> PORT= <PORT>
修改Deployment配置,添加卷挂载
kind: Deployment metadata: name: catsapi-deployment namespace: catsapi spec: replicas: 1 selector: matchLabels: app: catsapi template: metadata: labels: app: catsapi spec: containers: - name: catsapi-container image: <container-registry> ports: - containerPort: 3000 volumeMounts: # 挂载到应用的WORKDIR下,覆盖默认.env文件 - name: env-config mountPath: /usr/src/app/.env subPath: .env volumes: - name: env-config configMap: name: catsapi-env
解决方案二:拆分ConfigMap为独立key,用环境变量导入
如果想直接通过环境变量传递配置,先修正ConfigMap结构,再用envFrom简化导入:
修正后的ConfigMap
kind: ConfigMap metadata: name: catsapi-env namespace: catsapi data: CONTAINER_ID: "<COSMOS_CONTAINER>" COSMOS_ENDPOINT: "<COSMOS_ENDPOINT>" COSMOS_KEY: "<COSMOS_KEY>" DATABASE_ID: "<DATABASE_ID>" PORT: "<PORT>"
修正后的Deployment配置
kind: Deployment metadata: name: catsapi-deployment namespace: catsapi spec: replicas: 1 selector: matchLabels: app: catsapi template: metadata: labels: app: catsapi spec: containers: - name: catsapi-container image: <container-registry> ports: - containerPort: 3000 # 直接导入ConfigMap中所有key作为环境变量 envFrom: - configMapRef: name: catsapi-env
如果坚持使用逐个env配置,务必修正COSMOS_KEY的key引用:
env: - name: COSMOS_KEY valueFrom: configMapKeyRef: name: catsapi-env key: COSMOS_KEY # 这里改成正确的key
排查验证步骤
- 查看Pod错误详情:执行
kubectl describe pod <pod-name> -n catsapi,在Events字段中能看到具体的错误原因(比如key不存在、权限问题等)。 - 验证ConfigMap内容:执行
kubectl get configmap catsapi-env -n catsapi -o yaml,确认配置的key与Deployment引用完全一致。
内容的提问来源于stack exchange,提问作者beto
相关产品推荐
相关产品推荐

