2016-05-16 54 views
2

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

请注意,自那时起我不想再找到使用特定标签的窗格(我假设)如果使用复制控制器缩放,我可能无法找到正确的窗格。

回答

4

您可以使用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 
+1

不错,不知道这一点。 – Johan

2

将pod名称写入/etc/hostname,因此可以从此处读取它。在Java中(我正在使用),您还可以通过调用System.getenv("HOSTNAME")来获取主机名(并因此获取该pod的名称)。

相关问题