2016-05-16 4 views
2

クーベルネットでコンテナが属するポッドの名前をプログラムで取得する方法はありますか?もしそうなら、どのように?私はfabric8のJavaクライアントを使用していますが、カールか類似のものも同様に問題ありません。Kubernetesでコンテナーが属するポッドの名前をプログラムで取得しますか?

特定のラベルを使用してポッドを見つけたくないことに注意してください。レプリケートコントローラでスケーリングされている場合は、常に正しいポッドが見つからない場合があります。

答えて

4

downward APIを使用して、選択した環境変数にポッド名を入れるようにKubernetesに指示できます。例えば

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

ポッド名は/etc/hostnameに書き込まれていますので、そこから読み取ることができます。私が使用しているJavaでは、System.getenv("HOSTNAME")を呼び出すことによってホスト名(したがってポッド名)を取得することもできます。

関連する問題