在 Kubernetes 1.23 中,可以使用 Horizontal Pod Autoscaler(HPA)来实现 Pod 的自动扩容和缩容。HPA 根据 CPU 使用率或其他指标(例如内存使用率或自定义指标)自动调整副本数量。以下是如何实现 Pod 自动扩容和缩容的步骤:
1. 安装 Metrics Server
首先,确保你已经安装了 Metrics Server,这是 HPA 的依赖组件,用于收集资源使用数据。
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
2. 创建 Deployment
创建一个 Deployment,用于演示自动扩容和缩容。
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
resources:
requests:
cpu: "100m"
memory: "128Mi"
limits:
cpu: "500m"
memory: "512Mi"
保存上述 YAML 文件为 nginx-deployment.yaml,然后应用它:
kubectl apply -f nginx-deployment.yaml
3. 创建 Horizontal Pod Autoscaler
创建一个 HPA 资源,指定 CPU 使用率阈值和最小、最大副本数。
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
name: nginx-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: nginx-deployment
minReplicas: 1
maxReplicas: 10
targetCPUUtilizationPercentage: 50
保存上述 YAML 文件为 nginx-hpa.yaml,然后应用它:
kubectl apply -f nginx-hpa.yaml
4. 验证 HPA 是否工作
你可以使用以下命令查看 HPA 的状态:
kubectl get hpa
为了测试 HPA 的自动扩容,你可以向 nginx Deployment 施加负载。例如,使用 kubectl run 命令创建一个 busybox 容器来生成 CPU 负载:
kubectl run -i --tty load-generator --image=busybox /bin/sh
然后在 busybox 容器中运行以下命令:
while true; do wget -q -O- http://nginx-deployment.default.svc.cluster.local; done
这样会对 nginx 容器施加持续的负载。观察 HPA 的状态和 Deployment 的副本数量,你会看到随着 CPU 使用率的增加,HPA 会自动扩展 Pod 数量。
5. 监控和调试
你可以使用以下命令查看具体的 Pod 资源使用情况:
kubectl top pod
322



被折叠的 条评论
为什么被折叠?



