宁睿 发表于 2024-5-15 15:18:22

如何在K8s中实现 Pod 的自动扩展

在 Kubernetes 中实现 Pod 的自动扩缩,你可以使用 HorizontalPodAutoscaler 资源。以下是一个简单的例子:
起首,你需要确保你的 Kubernetes 集群中已经安装了 Metrics Server,因为 HPA 需要它来获取 Pod 的资源使用环境。
1、部署 Metrics Server(如果尚未部署):

kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
2、创建一个带有自动扩缩功能的 Deployment 或者 StatefulSet。

例如,以下是一个 Deployment 的配置文件:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 1
selector:
    matchLabels:
      app: my-app
template:
    metadata:
      labels:
      app: my-app
    spec:
      containers:
      - name: my-container
      image: my-image
      ports:
      - containerPort: 803、创建 HorizontalPodAutoscaler 资源来自动扩缩 Pod

apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
name: my-hpa
spec:
scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: my-app
minReplicas: 1
maxReplicas: 10
metrics:
- type: Resource
    resource:
      name: cpu
      target:
      type: Utilization
      averageUtilization: 80在这个例子中,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 为了实现更细粒度、更公平和更高效的资源分配而接纳的一种设计计谋。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 如何在K8s中实现 Pod 的自动扩展