在这个例子中,HPA 会根据 Pod 的 CPU 使用率自动扩缩 my-app Deployment 中的 Pod 数量,目标是保持平均 CPU 使用率在 80% 左右。minReplicas 和 maxReplicas 定义了扩缩的界限。
确保你的容用具有相关的资源请求和限制,如许 HPA 才华正常工作:
containers:
- name: my-container
image: my-image
ports:
- containerPort: 80
resources:
requests:
cpu: "100m"
limits:
cpu: "200m"
复制代码
记得应用这些配置文件到你的 Kubernetes 集群:
kubectl apply -f deployment.yaml
kubectl apply -f hpa.yaml
复制代码
一旦部署完成,HPA 会开始根据指定的指标自动扩缩 Pod 数量。
注意
HPA在做出决议时考虑的是所有被监控Pod的总体资源使用环境,而不是单个Pod或容器的资源限制。它会收集所有相关Pod的指标数据,并根据这些数据的聚合结果(如平均值、总和等)来做出扩缩容决议。
备注 k8s 资源限制cpu为什么以m为单位
在 Kubernetes(k8s)中,CPU 资源的限制和请求可以以不同的单位来表现,包括整核(如 1、2、3 等表现完整的 CPU 核心)和毫核(m),其中 1000m 等于 1 个完整的 CPU 核心。这种设计使得资源分配更加灵活和精细。
以毫核(m)为单位的重要原因是为了实现更细粒度的资源分配。在大型集群中,可能有成百上千的 Pod 同时运行,每个 Pod 可能只需要一小部分的 CPU 资源。如果只能以整核为单位举行分配,那么会造成大量的资源浪费。而以毫核为单位,可以确保每个 Pod 都能得到其所需的精确资源量,从而提高集群的整体资源利用率。
此外,以毫核为单位另有助于实现更公平的资源分配。在 Kubernetes 中,调度器会根据每个 Pod 的资源需求和限制来做出调度决议。如果以整核为单位,那么某些 Pod 可能会因为资源需求无法满足而被阻塞或延迟调度。而以毫核为单位,可以使得每个 Pod 都有机遇得到其所需的资源,从而实现更公平的资源分配。
总之,以毫核(m)为单位举行 CPU 资源限制和请求是 Kubernetes 为了实现更细粒度、更公平和更高效的资源分配而接纳的一种设计计谋。