KubernetesでPod名やNode名を環境変数として取得する方法(Downward API)
Kubernetesでは、Podのメタデータ(Pod名・Node名など)を
コンテナの環境変数として取得することができます。
これは Downward API と呼ばれる機能で、
アプリケーションが自身の情報を取得する際に利用されます。
例えば以下のような用途があります。
- Pod名をログに出力する
- Node名をアプリケーションで利用する
- Namespace情報を取得する
今回は Node名を環境変数として取得するPod を作成します。
Podマニフェストの作成
まずマニフェストファイルを作成します。
vi env-pod.yaml以下の内容を記述します。
apiVersion: v1
kind: Pod
metadata:
name: env-pod
spec:
containers:
- name: env-pod-container
image: nginx
env:
- name: MY_NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeNameこの設定により、Podがスケジュールされた Node名 が
環境変数 MY_NODE_NAME に設定されます。
Podをデプロイ
作成したマニフェストを適用します。
kubectl apply -f env-pod.yaml環境変数の確認
環境変数の確認
kubectl exec env-pod -- printenv MY_NODE_NAMENode名が表示されれば成功です。
※参考Pod名を取得する場合
Pod名を取得する場合は metadata.name を指定します。
env:
- name: MY_POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.nameまとめ
Kubernetesでは **Downward API を利用することで、
Podの情報をコンテナの環境変数として取得できます。
よく使用される情報は以下です。
| 取得できる情報 | fieldPath |
|---|---|
| Pod名 | metadata.name |
| Namespace | metadata.namespace |
| Node名 | spec.nodeName |
| Pod IP | status.podIP |
アプリケーションが自身の実行環境を把握する際に便利な機能です。
https://kubernetes.io/docs/concepts/workloads/pods/downward-api/
kubenetes公式ドキュメント
- タグ:
- Kubenetes