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