2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Pythonでkubectl get pod コマンドの内容を取得する方法

Last updated at Posted at 2024-07-10

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
--------------------
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?