Bootstrap

Pod 扩容和缩容

手动扩容和缩容

你可以通过修改 Deployment 等资源的 replicas 字段来手动控制 Pod 的数量。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp
spec:
  replicas: 5 # 修改此字段来调整副本数
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
      - name: myapp-container
        image: nginx

或者

# 扩容到5个副本
kubectl scale deployment myapp --replicas=5
# 缩容到2个副本
kubectl scale deployment myapp --replicas=2

工作原理:
Kubernetes 控制器会根据设置的副本数自动创建或删除 Pod,确保集群中有指定数量的 Pod 正在运行。

自动扩容和缩容(Horizontal Pod Autoscaler, HPA)

  1. HPA 的基本概念和工作原理

HPA 主要通过以下步骤进行扩容和缩容:
监控指标:HPA 会周期性地从指标 API 中获取 Pod 的资源使用情况(如 CPU、内存),或者自定义指标。
比较目标:将获取到的实际资源使用量与预设的扩缩容策略(如 CPU 使用率 50%)进行比较。
调整副本数:根据比较结果,增加或减少 Pod 的副本数量,以确保应用可以应对当前的负载。
HPA 的调度是周期性的,默认每 15 秒检查一次 Pod 资源的使用情况,并根据结果做出调整。

  1. HPA 的配置

HPA 是 Kubernetes 中的一个资源对象,可以通过 YAML 文件定义,或者使用命令行工具 kubectl 动态创建和修改。
基本配置示例
下面是一个使用 CPU 使用率进行自动扩缩容的 HPA 配置示例:

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: myapp-hpa
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: myapp    # HPA 关联的 Deployment
  minReplicas: 2    # 最小副本数
  maxReplicas: 10   # 最大副本数
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 50  # 当 CPU 使用率达到 50% 时触发扩缩容

scaleTargetRef:指定 HPA 要扩缩容的目标对象(通常是 Deployment 或 ReplicaSet)。
minReplicas:Pod 的最小副本数。
maxReplicas:Pod 的最大副本数,HPA 根据负载波动在此范围内动态调整副本数。
metrics:HPA 根据这些资源指标来决定是否扩缩容。上例中使用了 CPU 使用率作为指标。

;