首页 > 解决方案 > kubernetes - 将容器信息公开为环境变量

问题描述

我试图将一些容器信息公开为 env 变量,从 pod 的 spec.template.spec.containers[0].name 读取值,这似乎不起作用。在部署模板中引用容器字段的 apiSpec 是什么。部署模板如下:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      creationTimestamp: null
      labels:
        run: nginx
      name: nginx
    spec:
      replicas: 2
      selector:
        matchLabels:
          run: nginx
              strategy: {}
       template:
         metadata:
           creationTimestamp: null
            labels:
             run: nginx
        spec:
          containers:
           - image: nginx
            name: nginx
              ports:
             - containerPort: 8000
             resources: {}
            env:
             - name: MY_CONTAINER_NAME
                valueFrom:
                  fieldRef:
                    fieldPath: spec.template.spec.containers[0].name

标签: kuberneteskubernetes-deployment

解决方案


Downward API 使您能够将 pod 自己的元数据公开给在该 pod 内运行的进程。

目前,它允许您将以下信息传递给您的容器:

  • 豆荚的名称
  • Pod 的 IP 地址
  • pod 所属的命名空间
  • 运行 pod 的节点的名称
  • pod 正在运行的服务帐户的名称
  • 每个容器的 CPU 和内存请求
  • 每个容器的 CPU 和内存限制
  • 豆荚的标签
  • Pod 的注解

就是这样。如您所见,容器端口不在此列表中。

通常,通过 Downward API 可用的元数据相当有限。如果您需要更多,您需要直接从 Kubernetes API 服务器获取它,您可以使用客户端库或使用大使容器来完成。


推荐阅读