Kubernetes——查询并导出业务deployment/statefulset的request.cpu、request.mem和limit.cpu和limit.mem资源

发布时间 2023-07-17 16:50:09作者: 左扬

查询并导出业务deployment/statefulset的request.cpu、request.mem和limit.cpu和limit.mem资源

#!/bin/bash

# Retrieve all namespaces (excluding default, kube-system, and others)
namespaces=$(kubectl get namespaces --no-headers -o custom-columns=NAME:.metadata.name | egrep -v "(default|kube-system|cattle-fleet-system|cattle-impersonation-system|cattle-system |kube-node-lease|kube-public|local)")

output_file="resource_limits_and_replicas.csv"
rm -f $output_file

# Write CSV file headers
echo "Namespace,Type,Name,Container,CPU_Limit,Memory_Limit,Replicas,CPU_Request,Memory_Request" >> $output_file

# For each namespace
for ns in $namespaces; do
  # Get Deployment resource limits, requests, and replicas
  kubectl -n $ns get deployments -o json | \
    jq '.items[] | . as $parent | .spec.template.spec.containers[] | ["'${ns}'", "Deployment", $parent.metadata.name, .name, .resources.limits.cpu, .resources.limits.memory, $parent.spec.replicas, .resources.requests.cpu, .resources.requests.memory] |@csv' -r >> $output_file

  # Get StatefulSet resource limits, requests, and replicas
  kubectl -n $ns get statefulsets -o json | \
    jq '.items[] | . as $parent | .spec.template.spec.containers[] | ["'${ns}'", "StatefulSet", $parent.metadata.name, .name, .resources.limits.cpu, .resources.limits.memory, $parent.spec.replicas, .resources.requests.cpu, .resources.requests.memory] | @csv' -r >> $output_file
done