You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AKS中通过YAML创建Deployment遇CreateContainerConfigError求助

解决AKS中Deployment的CreateContainerConfigError问题

核心问题分析

你当前的配置存在两个关键错误:

  1. ConfigMap与Deployment引用不匹配:你的ConfigMap把所有环境变量打包在.env这一个key里,但Deployment却直接引用CONTAINER_ID等独立key——这些key在ConfigMap中根本不存在,这是触发CreateContainerConfigError的主要原因。
  2. 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

排查验证步骤

  1. 查看Pod错误详情:执行kubectl describe pod <pod-name> -n catsapi,在Events字段中能看到具体的错误原因(比如key不存在、权限问题等)。
  2. 验证ConfigMap内容:执行kubectl get configmap catsapi-env -n catsapi -o yaml,确认配置的key与Deployment引用完全一致。

内容的提问来源于stack exchange,提问作者beto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 07:15:22