kubernetes實踐之三十六:在容器內獲取Pod資訊 Downward API

百聯達發表於2018-05-13
一:前言
在某些叢集中,叢集中的每個節點都需要將自身的標識(ID)及程式繫結的IP等資訊事先寫入配置檔案中,程式啟動時讀取這些資訊,然後釋出到某個類似服務註冊中心的地方,以實現叢集節點的自動發現功能。

此時可以使用Downward API,具體做法是先編寫一個預啟動指令碼或Init Container,透過環境變數或檔案方式獲取Pod自身的名稱,IP地址等資訊,然後寫入主程式的配置檔案中,最後啟動主程式。

二:實現方式
Downward API 可以透過以下兩種方式將Pod資訊注入容器內部。
1.環境變數:用於單個變數,可以將Pod資訊和Container資訊注入容器內部。
2.Volume掛載: 將陣列類資訊生成檔案,掛載到容器內部。

三: 例項
環境變數方式,將Pod資訊注入為環境變數 dapi-test-pod.yaml

點選(此處)摺疊或開啟

  1. apiVersion: v1
  2. kind: Pod
  3. metadata:
  4.   name: dapi-test-pod
  5.   namespace: default
  6. spec:
  7.   containers:
  8.      - name: test-container
  9.        image: busybox
  10.        command: [ "/bin/sh","-c","env" ]
  11.        env:
  12.           - name: MY_POD_NAME
  13.             valueFrom:
  14.                fieldRef:
  15.                  fieldPath: metadata.name
  16.           - name: MY_POD_NAMESPACE
  17.             valueFrom:
  18.                fieldRef:
  19.                  fieldPath: metadata.namespace
  20.           - name: MY_POD_NAMES
  21.             valueFrom:
  22.                fieldRef:
  23.                  fieldPath: status.podIP
kubectl create -f dapi-test-pod.yaml

kubectl logs dapi-test-pod


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28624388/viewspace-2154411/,如需轉載,請註明出處,否則將追究法律責任。

相關文章