统计k8s中资源使用情况

#!/bin/bash

# 创建一个包含标题行的 CSV 文件
echo "资源类型,名称,CPU 使用量,内存使用量,CPU 限制,内存限制" > k8s_resources.csv

# 获取所有 StatefulSet 的资源使用情况和限制
statefulsets=$(kubectl get statefulset --all-namespaces -o json)
for namespace in $(echo "$statefulsets" | jq -r '.items[].metadata.namespace' | uniq); do
    echo "正在处理 StatefulSet,命名空间:$namespace"
    sts_names=$(echo "$statefulsets" | jq -r ".items[] | select(.metadata.namespace==\"$namespace\") | .metadata.name")
    for sts_name in $sts_names; do
        echo "正在处理 StatefulSet:$sts_name"
        cpu_usage=$(kubectl describe statefulset "$sts_name" -n "$namespace" | grep "cpu:" | awk '{print $2}')
        memory_usage=$(kubectl describe statefulset "$sts_name" -n "$namespace" | grep "memory:" | awk '{print $2}')
        cpu_limit=$(kubectl get statefulset "$sts_name" -n "$namespace" -ojsonpath='{.spec.template.spec.containers[*].resources.limits.cpu}')
        memory_limit=$(kubectl get statefulset "$sts_name" -n "$namespace" -ojsonpath='{.spec.template.spec.containers[*].resources.limits.memory}')
        echo "StatefulSet,$sts_name,$cpu_usage,$memory_usage,$cpu_limit,$memory_limit" >> k8s_resources.csv
    done
done

# 获取所有 Deployment 的资源使用情况和限制
deployments=$(kubectl get deployment --all-namespaces -o json)
for namespace in $(echo "$deployments" | jq -r '.items[].metadata.namespace' | uniq); do
    echo "正在处理 Deployment,命名空间:$namespace"
    deploy_names=$(echo "$deployments" | jq -r ".items[] | select(.metadata.namespace==\"$namespace\") | .metadata.name")
    for deploy_name in $deploy_names; do
        echo "正在处理 Deployment:$deploy_name"
        cpu_usage=$(kubectl describe deployment "$deploy_name" -n "$namespace" | grep "cpu:" | awk '{print $2}')
        memory_usage=$(kubectl describe deployment "$deploy_name" -n "$namespace" | grep "memory:" | awk '{print $2}')
        cpu_limit=$(kubectl get deployment "$deploy_name" -n "$namespace" -ojsonpath='{.spec.template.spec.containers[*].resources.limits.cpu}')
        memory_limit=$(kubectl get deployment "$deploy_name" -n "$namespace" -ojsonpath='{.spec.template.spec.containers[*].resources.limits.memory}')
        echo "Deployment,$deploy_name,$cpu_usage,$memory_usage,$cpu_limit,$memory_limit" >> k8s_resources.csv
    done
done

# 获取所有 DaemonSet 的资源使用情况和限制
daemonsets=$(kubectl get daemonset --all-namespaces -o json)
for namespace in $(echo "$daemonsets" | jq -r '.items[].metadata.namespace' | uniq); do
    echo "正在处理 DaemonSet,命名空间:$namespace"
    ds_names=$(echo "$daemonsets" | jq -r ".items[] | select(.metadata.namespace==\"$namespace\") | .metadata.name")
    for ds_name in $ds_names; do
        echo "正在处理 DaemonSet:$ds_name"
        cpu_usage=$(kubectl describe daemonset "$ds_name" -n "$namespace" | grep "cpu:" | awk '{print $2}')
        memory_usage=$(kubectl describe daemonset "$ds_name" -n "$namespace" | grep "memory:" | awk '{print $2}')
        cpu_limit=$(kubectl get daemonset "$ds_name" -n "$namespace" -ojsonpath='{.spec.template.spec.containers[*].resources.limits.cpu}')
        memory_limit=$(kubectl get daemonset "$ds_name" -n "$namespace" -ojsonpath='{.spec.template.spec.containers[*].resources.limits.memory}')
        echo "DaemonSet,$ds_name,$cpu_usage,$memory_usage,$cpu_limit,$memory_limit" >> k8s_resources.csv
    done
done

echo "脚本执行完毕,结果已保存在 k8s_resources.csv 文件中。"

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Traefik是一个基于Kubernetes的Ingress控制器,用于在Kubernetes集群处理入站网络流量。您可以通过在Kubernetes集群使用Traefik来实现负载均衡、路由和HTTPS等功能。 要在Kubernetes使用Traefik,您可以按照以下步骤进行操作: 1. 首先,您需要添加Traefik的Helm chart仓库到您的Kubernetes集群。您可以使用以下命令将Traefik的Helm chart仓库添加到Helm: ``` helm repo add traefik https://helm.traefik.io/traefik ``` 2. 然后,您可以使用Helm来安装Traefik。您可以使用以下命令来安装Traefik: ``` helm install traefik traefik/traefik ``` 3. 安装完成后,Traefik将会被部署到您的Kubernetes集群。您可以使用以下命令来验证Traefik的部署状态: ``` kubectl get pods -n <namespace> ``` 4. 一旦Traefik部署成功,您可以通过创建Ingress资源来配置Traefik的行为。您可以使用以下命令创建一个简单的Ingress资源: ``` apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: example-ingress spec: rules: - host: example.com http: paths: - path: / pathType: Prefix backend: service: name: example-service port: number: 80 ``` 在这个示例,Traefik将会将来自example.com的流量路由到名为example-service的后端服务。 5. 您还可以使用Traefik提供的其他功能,如TLS证书管理和动态配置等。您可以参考Traefik官方文档以了解更多详细的配置选项和用法。 总结起来,要在Kubernetes使用Traefik,您需要添加Traefik的Helm chart仓库,并使用Helm来安装Traefik。然后,您可以通过创建Ingress资源来配置Traefik的行为,实现负载均衡和路由等功能。记得查看官方文档以获取更多使用Traefik的详细信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值