Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

22.3. 使用 Downward API 消耗容器值

22.3.1. 使用环境变量

消耗 Downward API 的一种机制是使用容器的环境变量。EnvVar 类型的 valueFrom 字段(类型为 EnvVarSource)用于指定变量的值应来自一个 FieldRef 源,而不是 value 字段指定的字面值。以后可能会支持其他源 ; 当前,源的 fieldRef 字段用于从 Downward API 中选择一个字段。

只有 pod 常量属性可以这种方式消耗,因为一旦进程启动并且将变量值已更改的通知发送给进程,就无法更新环境变量。使用环境变量支持的字段包括:

  • Pod 名称
  • Pod 命名空间

    1. 创建 pod.yaml 文件:

      apiVersion: v1
      kind: Pod
      metadata:
        name: dapi-env-test-pod
      spec:
        containers:
          - name: env-test-container
            image: gcr.io/google_containers/busybox
            command: [ "/bin/sh", "-c", "env" ]
            env:
              - name: MY_POD_NAME
                valueFrom:
                  fieldRef:
                    fieldPath: metadata.name
              - name: MY_POD_NAMESPACE
                valueFrom:
                  fieldRef:
                    fieldPath: metadata.namespace
        restartPolicy: Never
    2. pod.yaml 文件创建 pod:

      $ oc create -f pod.yaml
    3. 检查容器的日志,以查看 MY_POD_NAMEMY_POD_NAMESPACE 值:

      $ oc logs -p dapi-env-test-pod