Kubernetes:我可以从容器内部读取我的 pod/容器正在运行的 Kubernetes 命名空间吗?

Kubernetes:我可以从容器内部读取我的 pod/容器正在运行的 Kubernetes 命名空间吗?

即无需在容器规范中配置任何变量?我想可能有一些环境变量,其中暴露了 Kubernetes 命名空间的名称,但我在文档中没有看到任何内容。

想知道这是否可能,或者我需要将命名空间的名称作为变量注入容器规范中。

答案1

您可以使用字段引用。

看一下这个例子:

apiVersion: v1
kind: Pod
metadata:
  name: envars-fieldref-example
spec:
  containers:
    - name: test
      image: k8s.gcr.io/busybox
      command: [ "sh", "-c"]
      args:
      - while true; do
          echo -en '\n';
          printenv YOUR_POD_NAMESPACE, YOUR_POD_IP;
          sleep 10;
        done;
      env:
        - name: YOUR_POD_NAMESPACE
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace
        - name: YOUR_POD_IP
          valueFrom:
            fieldRef:
              fieldPath: status.podIP

在配置文件中,你可以看到五个环境变量。env字段是一个数组环境变量。数组中的第一个元素指定YOUR_POD_NAMESPACE环境变量从 Pod 的metadata.namespace字段中获取其值。类似地,其他环境变量从 Pod 字段中获取其名称。

查看更多:env-pod

相关内容