在Kubernetes中编程获取容器所属pod的名称?

zphenhs4  于 5个月前  发布在  Kubernetes
关注(0)|答案(2)|浏览(46)

在Kubernetes中,有没有一种方法可以通过编程方式获取容器所属的pod的名称?如果有,怎么做?我使用的是fabric8的java客户端,但curl或类似的东西也可以。
请注意,我不想使用特定的标签来查找pod,因为(我假设)如果使用复制控制器进行扩展,我可能不会总是找到正确的pod。

ffx8fchx

ffx8fchx1#

您可以告诉Kubernetes使用downward API将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

字符串

zqry0prt

zqry0prt2#

pod的名字被写入/etc/hostname,所以可以从那里读取它。在Java中(我正在使用),你也可以通过调用System.getenv("HOSTNAME")来获取主机名(以及pod的名字)。

相关问题