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

时间:2016-05-16 11:39:57

标签: java kubernetes fabric8

有没有办法以编程方式获取容器属于Kubernetes的pod的名称?如果是这样的话?我正在使用fabric8的java客户端,但卷曲或类似的东西也会很好。

请注意,从那时起我不想使用特定标签找到pod(我假设)如果使用复制控制器缩放,我可能无法找到合适的pod。

2 个答案:

答案 0 :(得分:10)

您可以告诉Kubernetes使用downward API将广告连播名称放入您选择的环境变量中。

例如:

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

答案 1 :(得分:4)

广告连播名称已写入/etc/hostname,因此可以从那里读取。在Java(我正在使用)中,您还可以通过调用System.getenv("HOSTNAME")来获取主机名(以及pod的名称)。