以下是一个 Kubernetes 中 Pod 的自动水平扩展示例,使用 Horizontal Pod Autoscaler(HPA)来根据 CPU 使用率自动调整 Pod 的副本数。
- 创建 Deployment:
首先,创建一个 Deployment 对象,定义应用程序的容器和资源需求。
apiVersion: apps/v1
kind: Deployment
metadata:
name: example-deployment
spec:
replicas: 3
selector:
matchLabels:
app: example-app
template:
metadata:
labels:
app: example-app
spec:
containers:
- name: example-container
image: example/image:latest
resources:
limits:
cpu: 500m
requests:
cpu: 200m
- 创建 Horizontal Pod Autoscaler (HPA):
接下来,创建一个 HorizontalPodAutoscaler 对象,定义 Pod 的自动水平扩展规则。
apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
name: example-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: example-deployment
minReplicas: 1
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 50
在上述示例中,HPA 的目标是 Deployment “example-deployment”,它将根据 CPU 使用率自动调整 Pod 的副本数。设置了最小副本数为 1,最大副本数为 10。平均 CPU 使用率目标为 50%。
- 应用配置:
应用上述 YAML 配置文件到 Kubernetes 集群,创建 Deployment 和 HPA 对象:
kubectl apply -f deployment.yaml
kubectl apply -f hpa.yaml
- 监视 HPA:
使用以下命令来监视 HPA 的状态和自动扩展的情况:
kubectl get hpa
kubectl describe hpa example-hpa
通过这些命令,您可以查看 HPA 的当前状态、目标和当前副本数,以及根据 CPU 使用率的变化自动调整 Pod 的副本数。
- 测试自动扩展:
模拟负载来触发自动扩展。可以使用工具如hey
、ab
或自定义脚本来发送请求到应用程序,以增加 CPU 使用率。
hey -c 10 -z 30s http://example-app
根据负载的增加,HPA 将监测 CPU 使用率,并根据定义的规则自动扩展 Pod 的副本数。
以上是一个基本的 Kubernetes Pod 的自动水平扩展示例。您可以根据自己的需求和环境进行调整和扩展,例如根据其他指标(如内存使用率)进行自动扩展,或者调整 HPA 的配置参数。