ydswin

忘记背后,努力面前的,向着标杆直跑

导航

< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

统计

如何在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: 80

3、创建 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 为了实现更细粒度、更公平和更高效的资源分配而采用的一种设计策略。

posted on   dashery  阅读(170)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版
· 2分钟学会 DeepSeek API,竟然比官方更好用!
· .NET 使用 DeepSeek R1 开发智能 AI 客户端
· DeepSeek本地性能调优
· 一文掌握DeepSeek本地部署+Page Assist浏览器插件+C#接口调用+局域网访问!全攻略
点击右上角即可分享
微信分享提示