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

Kubernetes Pythonクライアントに触れてみる

Posted at

1.はじめに

pythonにてコマンドプロンプトでコマンドを入力し,kubernetesに関する情報取得することを目的としてKubernetes Pythonクライアントに触れてみました.

2.Kubernetesとは

Kubernetes(通常 "k8s" と略される)は、コンテナ化されたアプリケーションのデプロイメント、スケーリング、および管理を自動化するためのオープンソースのシステムです。Googleによって開発され、Cloud Native Computing Foundation (CNCF) に寄贈されたこのプラットフォームは、現在最も人気のあるコンテナオーケストレーションツールの一つです。

3.準備

実際に触るにあたってインストールが必要となるのでpipを使用して以下のコマンドを実行します.そうするとkubernetesのAPIの使用が可能になります.

pip install kubernetes

4.実際に触ってみる.

自分が実際に実装したプログラムを応用例として表示します.

get_pod_information.py
from kubernetes import client, config, stream

# Kubernetesクラスタへの接続
config.load_kube_config()

# Kubernetes APIの初期化
v1 = client.CoreV1Api()

# 全てのネームスペースのPodのリストを取得
pods = v1.list_pod_for_all_namespaces(watch=False)

storage_info = None

for pod in pods.items:
    if pod.metadata.namespace != "kube-system":
        try:
            # コンテナ内で df コマンドを実行し、ストレージ使用量を取得
            command = ['df', '-h']
            resp = stream.stream(v1.connect_get_namespaced_pod_exec, pod.metadata.name, 
                                 pod.metadata.namespace, command=command, 
                                 stderr=True, stdin=False, stdout=True, tty=False)
            
            # '/var'を含む行からストレージ情報を取得
            for line in resp.split('\n'):
                if '/var' in line:
                    parts = line.split()
                    if len(parts) >= 6 and not storage_info:
                        # 最初に見つかったストレージ情報を保存
                        storage_info = f"{parts[1]}  {parts[2]}  {parts[3]}  {parts[4]}"
                        nfs_size = parts[1]
                        break
        except Exception as e:
            print(f"Error executing command in pod {pod.metadata.name}: {e}")
        if storage_info:
            # 最初に見つかったストレージ情報があればループを終了
            break

# NFS-Storage情報を出力
if storage_info:
    print("NFS-Storage")
    print("Size  Used Avail Use%")
    print(storage_info)
else:
    print("NFS-Storage情報が見つかりませんでした。")

実行すると

実行結果
$ python3 get_pod_information.py
Pod: c0a21115-sql-b-548559cb6-6fglv
 Size: 0.4G
 CAPACITY: 4.0Gi
Pod: c0a21115-wp-a-794d76c58b-fgqbk
 Size: 1.8G
 CAPACITY: 4.0Gi
Pod: c0a21115-wp-b-5ccd59dd47-kg88x
 Size: 1.8G
 CAPACITY: 4.0Gi
Pod: c0a21115-sql-a-5444567d48-92zjk
 Size: 0.4G
 CAPACITY: 4.0Gi

get_pod_information.pyでは取得したPodのストレージ使用量とそのPodに紐づくPVCを表示しています.このように値を取得することでストレージの使用状況の把握が容易になりました.
今回はclient, config, streamを使用したが他にもあるのでいろいろと試してみると面白いかもしれません.

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