banner
Aki

Aki

太阳能维修,月亮可更换,星星不闪包退换。
twitter

[運用] K8S整理リソース割り当てリスト

用途#

k8s リソースの分布状況を整理し、各ネームスペースで割り当てられたリソースの割り当てを確認します。

#!/bin/bash

# すべてのネームスペースのリストを取得する
namespaces=$(kubectl get namespaces -o jsonpath='{.items[*].metadata.name}')

# 各ネームスペースを反復処理する
for namespace in $namespaces
do
    echo "ネームスペース: $namespace"

    # ネームスペース内のすべてのPodを取得する
    pods=$(kubectl get pods --namespace=$namespace -o jsonpath='{.items[*].metadata.name}')

    total_cpu_limit=0
    total_memory_limit=0

    # 各Podを反復処理し、そのCPUおよびメモリ制限を合計する
    for pod in $pods
    do
        cpu_limit=$(kubectl get pod $pod --namespace=$namespace -o jsonpath='{.spec.containers[*].resources.limits.cpu}')
        memory_limit=$(kubectl get pod $pod --namespace=$namespace -o jsonpath='{.spec.containers[*].resources.limits.memory}')

        # CPU制限を処理する
        if [[ $cpu_limit =~ ^[0-9]+m$ ]]; then
            cpu_limit=${cpu_limit%m}
        elif [[ $cpu_limit =~ ^[0-9]+$ ]]; then
            cpu_limit=$((cpu_limit * 1000))  # ミリコアに変換する
        else
            cpu_limit=0
        fi

        # メモリ制限を処理する
        if [[ $memory_limit =~ ^[0-9]+Mi$ ]]; then
            memory_limit=${memory_limit%Mi}
        elif [[ $memory_limit =~ ^[0-9]+Gi$ ]]; then
            memory_limit=$((${memory_limit%Gi} * 1024))  # MiBに変換する
        elif [[ $memory_limit =~ ^[0-9]+$ ]]; then
            memory_limit=$((memory_limit / 1024))  # KiBと仮定し、MiBに変換する
        else
            memory_limit=0
        fi

        # CPUおよびメモリ制限を合計する
        total_cpu_limit=$((total_cpu_limit + cpu_limit))
        total_memory_limit=$((total_memory_limit + memory_limit))
    done

    echo "  合計CPU制限: $total_cpu_limit mCPU"
    echo "  合計メモリ制限: $total_memory_limit MiB"
    echo
done

最終的なスクリプトは、output.txt ファイルをルートディレクトリにエクスポートします。
以下のような効果が得られます:

ネームスペース: kube-public
  合計CPU制限: 0 mCPU
  合計メモリ制限: 0 MiB

ネームスペース: kube-system
  合計CPU制限: 0 mCPU
  合計メモリ制限: 340 MiB

ネームスペース: local
  合計CPU制限: 0 mCPU
  合計メモリ制限: 0 MiB

ネームスペース: monitoring
  合計CPU制限: 0 mCPU
  合計メモリ制限: 0 MiB

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。