19

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

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

4

2 回答 2

34

您可以使用向下 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
于 2016-05-16T18:44:02.760 回答
18

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

于 2016-05-16T11:54:59.753 回答