第 16 章 自动扩展
Kubernetes 包含 HorizontalPodAutoscaler
,允许 StatefulSets 或 Deployment 根据指定的指标自动扩展或缩减。Infinispan CR 会公开 .status.scale
子资源,它允许 HorizontalPodAutoscaler
资源以 Infinispan CR 为目标。
在定义 HorizontalPodAutoscaler
配置前,请考虑您定义的 Data Grid 缓存类型。分布式和复制缓存有不同的扩展要求,因此为运行这些缓存类型的组合定义了 HorizontalPodAutoscaler
可能并不具有优势。例如,定义当内存用量达到特定百分比时扩展的 HorizontalPodAutoscaler
允许在定义分布式缓存时增加整个缓存容量,因为缓存条目分散到 pod 中,但它无法像每个 pod 主机所有缓存条目一样使用复制缓存。相反,根据 CPU 使用率配置 HorizontalPodAutoscaler
,对于每个 pod 都包含所有缓存条目的集群会更有益,因此在附加节点间分布读取请求将允许同时处理更多请求。
16.1. Configuring HorizontalPodAutoscaler
创建一个以 Infinispan CR 为目标的 HorizontalPodAutoScaler 资源。
流程
在与
Infinispan
CR 相同的命名空间中定义HorizontalPodAutoscaler
资源apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: name: infinispan-auto spec: scaleTargetRef: apiVersion: infinispan.org/v1 kind: Infinispan name: example 1 minReplicas: 1 maxReplicas: 10 metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 50
- 1
Infinispan
CR 的名称
如果使用类型为 cpu
或 memory
的指标资源,您必须在 Infinispan
CR 中为此资源配置请求/限制。
在升级 Data Grid 集群时,应删除 HorizontalPodAutoscaler,因为自动扩展会导致升级过程进入非预期的状态,因为 Operator 需要将集群缩减为 0 个 pod。