Kubernetes——查询并导出业务deployment/statefulset的request.cpu、request.mem和limit.cpu和limit.mem资源
一、计算逻辑
针对单个pod里只有单个docker的计算逻辑: CPU_Limit = c0.resources.limits.cpu Memory_Limit = c0.resources.limits.memory CPU_Request = c0.resources.requests.cpu Memory_Request = c0.resources.requests.memory - image: abcxxxxxxx:version1.0.0-rc.0-1-g77d5c5b5f1d3-qcgfz name: c0 resources: limits: cpu: "2" memory: 4Gi requests: cpu: "1" memory: 2Gi --------------------------------------------------------------------------------- 针对单个pod里有多个docker的计算逻辑: CPU_Limit = c0.resources.limits.cpu + c1.resources.limits.cpu Memory_Limit = c0.resources.limits.memory + c1.resources.limits.memory CPU_Request = c0.resources.requests.cpu + c1.resources.requests.cpu Memory_Request = c0.resources.requests.memory + c1.resources.requests.memory -image: abcxxxxxxx:version1.0.0-rc.0-1-g77d5c5b5f1d3-qcgf name: c0 resources: limits: cpu: "2" memory: 6Gi requests: cpu: "1" memory: 2Gi - image: defxxxxxxx:version1.0.0-rc.0-1-g77d5c5b5f1d3-qcgf name: c1 resources: limits: cpu: 500m memory: 512Mi requests: cpu: 500m memory: 512Mi
二、计算程序
#!/bin/bash # Retrieve all namespaces namespaces=$(kubectl get namespaces --no-headers -o custom-columns=NAME:.metadata.name | egrep -v "(default|kube-system|kube-public)") output_file="resource_limits_and_replicas.csv" rm -f $output_file # Write CSV file headers echo "Namespace,Type,Name,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 -r --arg ns "$ns" '.items[] | [$ns, "Deployment", .metadata.name, (reduce .spec.template.spec.containers[] as $item (""; . + $item.resources.limits.cpu)), (reduce .spec.template.spec.containers[] as $item (""; . + $item.resources.limits.memory)), .spec.replicas, (reduce .spec.template.spec.containers[] as $item (""; . + $item.resources.requests.cpu)), (reduce .spec.template.spec.containers[] as $item (""; . + $item.resources.requests.memory))] | @csv' >> $output_file # Get StatefulSet resource limits, requests, and replicas kubectl -n $ns get statefulsets -o json | \ jq -r --arg ns "$ns" '.items[] | [$ns, "StatefulSet", .metadata.name, (reduce .spec.template.spec.containers[] as $item (""; . + $item.resources.limits.cpu)), (reduce .spec.template.spec.containers[] as $item (""; . + $item.resources.limits.memory)), .spec.replicas, (reduce .spec.template.spec.containers[] as $item (""; . + $item.resources.requests.cpu)), (reduce .spec.template.spec.containers[] as $item (""; . + $item.resources.requests.memory))] | @csv' >> $output_file done
三、输出的样本
- request limit statefulset Kubernetes deploymentrequest limit statefulset kubernetes kubernetes内存request limit statefulset deployment daemonset方式 statefulset deployment daemonset对象 控制器statefulset deployment情况 requests内存limits资源 statefulset kubernetes kubernetes-deployment 金丝雀 金丝kubernetes-v statefulset requests limits k8s k8