以编程方式获取容器在 Kubernetes 中所属的 Pod 的名称?

Programmatically get the name of the pod that a container belongs to in Kubernetes?

有没有办法以编程方式获取容器在 Kubernetes 中所属的 Pod 的名称?如果是这样怎么办?我正在使用 fabric8 的 java 客户端,但 curl 或类似的东西也可以。

请注意,从那时起我不想使用特定标签找到 pod(我假设)如果使用复制控制器进行缩放,我可能并不总能找到正确的 pod。

pod 名称被写入 /etc/hostname,因此可以从那里读取它。在 Java(我正在使用)中,您还可以通过调用 System.getenv("HOSTNAME").

获取主机名(以及 pod 的名称)

您可以使用 downward API.

告诉 Kubernetes 将 pod 名称放入您选择的环境变量中

例如:

apiVersion: v1
kind: Pod
metadata:
  name: dapi-test-pod
spec:
  containers:
    - name: 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
        - name: MY_POD_IP
          valueFrom:
            fieldRef:
              fieldPath: status.podIP
  restartPolicy: Never