kubectl get pod コマンドを実行した時のターミナル表示される情報を取得する方法を紹介します.
まずモジュールを import します
from kubernetes import client, config
import subprocess
Kubernetesクラスターへ接続し,CoreV1Api の初期化を行います.
# Kubernetesクラスターへの接続
config.load_kube_config()
# CoreV1Apiの初期化
v1 = client.CoreV1Api()
namespace にある全ての Pod のリストを取得します.
# 全てのnamespaceのPodのリストを取得
pod_list = v1.list_pod_for_all_namespaces(watch=False)
取得したリストから, kubectl get pod コマンドを実行した時に表示される要素を取り出します
- 取り出す要素
- IP(pod_ip)
- namespace(pod_namespace)
- podの名前(pod_name)
- readyになっている数(ready_field)
- ステータス(pod_status)
# 各要素の取り出し
for i in pod_list.items:
pod_ip = i.status.pod_ip
pod_namespace = i.metadata.namespace
pod_name = i.metadata.name
pod_status = i.status.phase
# READY
if i.status.container_statuses is not None:
ready_containers = sum(1 for c in i.status.container_statuses if c.ready)
total_containers = len(i.status.container_statuses)
else:
ready_containers = 0
total_containers = 0
ready_field = f"{ready_containers}/{total_containers}"
以上で kubectl get pod コマンドを実行したときに表示される要素を取得できます.
ターミナルに表示したいときは以下のコードを使用すると,kubectl get pod コマンドを実行したときのような表示がされます.
また,テキストファイルに書き込みたいときも使えます.
txt = "%s\t%s\t%s\t%s\t%s\n" % (pod_ip, pod_namespace, pod_name, ready_field, pod_status)
print("IP Address Namespace Name Ready Status")
print(txt)
実行結果
--------------------
IP Address Namespace Name Ready Status
10.42.0.247 longhorn-system longhorn-csi-plugin-khcqd 1/3 Running
--------------------
IP Address Namespace Name Ready Status
10.42.0.252 longhorn-system csi-snapshotter-58bf69fbd5-tcnpd 0/1 Running
--------------------
IP Address Namespace Name Ready Status
10.42.1.153 longhorn-system longhorn-csi-plugin-s8kmq 1/3 Running
--------------------