如何配置水平吊舱的自动缩放

128 阅读3分钟

各位读者大家好,我将介绍一下什么是水平吊舱自动缩放以及如何配置水平吊舱自动缩放的细节。

水平豆荚自动缩放

为了自动扩展工作负载以满足需求,HorizontalPodAutoscaler会自动修改工作负载资源,如部署、复制集或状态集。

HorizontalPodAutoscaler通知工作负载资源(部署、StatefulSet或其他类似资源),如果需求下降并且Pod的数量超过配置的最小值,则将其缩减。

要执行的一些实施步骤。

  1. 创建一个Kubernetes部署
  2. 创建一个Kubernetes服务
  3. 创建HPA
  4. 增加负载
  5. 停止负载

首先,你必须安装一个叫做 "metric server "的工具。

wget https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml

metric server是一个收集你的资源指标的机制,如CPU、内存使用等。

安装后,你会得到一个名为 "组件.YAML "的YAML文件

打开这个文件,在该文件中,你必须在度量服务器资源中添加 " -kubelet-insecure-tls " [以跳过认证检查]

创建一个Kubernetes部署和服务

创建Kubernetes部署和服务清单文件(deployment-svc.yaml)

apiVersion: apps/v1
kind: Deployment
metadata:
  name: server
  labels:
    app: server
spec:
  replicas: 1
  selector:
    matchLabels:
      app: server
  template:
    metadata:
      labels:
        app: server
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80
        resources:
          limits:
            cpu: 100m
          requests:
            cpu: 50m

---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: server
  name: server
  namespace: default
spec:
  ports:
  - name: server
    port: 80
  selector:
    app: server
  sessionAffinity: None
  type: NodePort


使用命令应用该清单文件

kubectl apply -f deployment-svc.yml

通过运行命令检查部署和服务

kubectl get deployments
kubectl get service
kubectl get pods

现在,运行该命令

kubectl autoscale deployment server --cpu-percent=50 --min=1 --max=10

该命令将自动缩放我们创建的 "服务器 "部署,最小的Pod数量是1,最大的是10,CPU %是50%,这意味着HPA控制器将增加和减少复制的数量(通过更新部署),以保持所有Pod的平均CPU利用率为50%。

通过运行命令检查新制作的HPA的状态。

kubectl get hpa

你可以增加负载,看看自动伸缩器的反应。为此,你将启动一个不同的Pod作为客户端。客户端Pod中的容器在无限循环中运行,向php-apache服务发送查询。因此,输入命令

 kubectl run -i --tty load-generator --rm --image=busybox:1.28 --restart=Never -- /bin/sh -c "while sleep 0.01; do wget -q -O- http://server; done"

这个命令将创建另一个基于busybox镜像的Pod,在这个镜像里面,在这个nginx服务上运行这个wget命令,并给它带来大量的负载。

打开另一个终端,输入命令

kubectl get hpa server --watch

你可以看到杯子的使用量增加了,而且一直在增加,你也可以检查kubectl get deployment,副本数量也会增加,它将增加到7个pod副本。

要停止监测,只需在你输入增加负载命令的终端上做ctrl+c。

第二种方法

你也可以通过清单文件配置HPA

最后,让我们配置我们的HorizontalPodAutoscaler匹配服务器部署在autoscaling/v1 API版本。

apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: servers
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: server
  minReplicas: 1
  maxReplicas: 15
  targetCPUUtilizationPercentage: 20

应用这个清单文件

kubectl apply -f hpa.yaml

现在通过输入命令检查hpa的状态

kubectl get hpa

让我们产生一些指向我们的网络服务器的网络流量,然后分析其结果。
我们将利用Hey,一个简单的网络负载生成器,来生成负载。

首先,转发服务的端口

kubectl port-forward svc/server 5000:80

从你的主机终端运行hey,选项为-n 10000,用两个工作者同时提交10000个请求

我们可以观察到CPU和内存消耗的显著上升。我们也可以在hpa的状态中看到复制的数字。

总结

这篇文章解释了如何配置水平荚的自动缩放。我希望你喜欢这个实用的指导。激励自己配置水平豆荚的自动缩放,并利用它们。