一、k8s资源配置
在 Kubernetes 中,有三个非常重要的资源概念,分别是资源请求(Requests)、资源使用率(Usage) 和 资源限制(Limits)
1、资源请求 Requests
资源请求 是 Pod 启动时向 Kubernetes 调度器声明的最低资源需求。调度器会根据这些请求值来决定是否将 Pod 调度到某个节点上。
作用
- 资源预留:确保 Pod 启动时有足够的资源可用。
- 调度决策:调度器会检查节点的可用资源是否满足 Pod 的资源请求,只有满足条件时才会将 Pod 调度到该节点。
- 服务质量(QoS):Kubernetes 根据资源请求和限制将 Pod 分为不同的服务质量等级(如 Guaranteed、Burstable、BestEffort)。
示例
resources:requests:memory: "4Gi"cpu: "2"
- memory: “4Gi”:Pod 请求 4GB 内存。
- cpu: “2”:Pod 请求 2 核 CPU。
- cpu:“100m”:Pod请求100毫核,也就是0.1核CPU
2、资源使用率 Usages
资源使用率 是 Pod 在运行时实际使用的资源量。它可以通过工具(如 kubectl top、metrics-server 或 Prometheus)实时监控。
作用
- 监控和分析:帮助管理员了解 Pod 的实际资源使用情况。
- 性能优化:根据实际使用情况调整资源请求和限制,优化资源利用率
3、资源限制率 Limits
资源限制 是 Pod 允许使用的最大资源量。它用于防止 Pod 超过分配的资源,避免对其他 Pod 造成影响。
** 作用**
- 资源限制:防止 Pod 使用超过分配的资源。
- 服务质量(QoS):与资源请求一起决定 Pod 的服务质量等级。
- 避免过载:防止节点过载,确保系统的稳定性。
示例
resources:limits:memory: "8Gi"cpu: "4"
- memory: “8Gi”:Pod 的内存使用上限为 8GB。
- cpu: “4”:Pod 的 CPU 使用上限为 4 核。
4、关系
资源请求(Requests)
- 调度决策:调度器根据资源请求决定是否将 Pod 调度到某个节点。
- 资源预留:确保 Pod 启动时有足够的资源可用。
- 服务质量:影响 Pod 的服务质量等级。
资源使用率(Usage)
- 实时监控:反映 Pod 在运行时的实际资源使用情况。
- 性能优化:帮助管理员调整资源请求和限制。
资源限制(Limits)
- 资源上限:防止 Pod 使用超过分配的资源。
- 服务质量:与资源请求一起决定 Pod 的服务质量等级。
- 避免过载:防止节点过载,确保系统的稳定性。
二、资源使用情况命令
1、查看服务器cpu使用情况命令
其中服务器1核的cpu是100%,若服务器是4核,cpu可达到400%
top
2、查看Kubernetes中pod资源使用情况
Kubernetes中查看cpu资源使用情况是按照k8s集群的总数进行计算的,上限是100%
kubectl top pod <pod-name>
3、查看k8s中pod的资源请求和限制
kubectl describe pod <pod-name> -n <namespace>
4、所有pod的基本信息
kubectl get pods 命令可以列出所有 Pod 的基本信息,但默认情况下不会显示资源请求和限制。要查看这些信息,可以使用 -o json 或 -o yaml 选项。
kubectl get pod <pod-name> -n <namespace> -o json
在 JSON 输出中,查找 spec.containers[].resources.requests 和 spec.containers[].resources.limits。
5、查看每个节点的资源请求和限制
kubectl describe nodes
6、查看每个节点的资源使用情况
kubectl top nodes