在Kubernetes中,有没有一种方法可以通过编程方式获取容器所属的pod的名称?如果有,怎么做?我使用的是fabric8的java客户端,但curl或类似的东西也可以。请注意,我不想使用特定的标签来查找pod,因为(我假设)如果使用复制控制器进行扩展,我可能不会总是找到正确的pod。
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
字符串
zqry0prt2#
pod的名字被写入/etc/hostname,所以可以从那里读取它。在Java中(我正在使用),你也可以通过调用System.getenv("HOSTNAME")来获取主机名(以及pod的名字)。
/etc/hostname
System.getenv("HOSTNAME")
2条答案
按热度按时间ffx8fchx1#
您可以告诉Kubernetes使用downward API将pod名称放入您选择的环境变量中。
举例来说:
字符串
zqry0prt2#
pod的名字被写入
/etc/hostname
,所以可以从那里读取它。在Java中(我正在使用),你也可以通过调用System.getenv("HOSTNAME")
来获取主机名(以及pod的名字)。