首页 公告 项目 RSS

k8s水平扩容

January 4, 2022 本文有 496 个字 需要花费 1 分钟阅读

简介

k8s 的好处就是可以弹性水平扩容和纵向扩容,平时纵向扩容用的不太多,所以今天说说水平扩容,在创建hpa之前你要确定集群中已经安装了metrics-server,我使用的是k3s,直接自带

操作

基于

https://kubernetes.io/zh/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/

首先创建需要的容器,下面是dockerfile

FROM php:5-apache
COPY index.php /var/www/html/index.php
RUN chmod a+rx index.php

下面是index.php

<?php
  $x = 0.0001;
  for ($i = 0; $i <= 1000000; $i++) {
    $x += sqrt($x);
  }
  echo "OK!";
?>

原理就是当你访问index.php的时候会进行一个循环计算来提高cpu的使用率

编译镜像

docker build . -t registry.bboysoul.cn/hpa-example

然后推送到仓库

docker push registry.bboysoul.cn/hpa-example:latest

然后创建一个svc和deployment

apiVersion: apps/v1
kind: Deployment
metadata:
  name: php-apache
spec:
  selector:
    matchLabels:
      run: php-apache
  replicas: 1
  template:
    metadata:
      labels:
        run: php-apache
    spec:
      imagePullSecrets:
      - name: regcred
      containers:
      - name: php-apache
        image: registry.bboysoul.cn/hpa-example:latest
        ports:
        - containerPort: 80
        resources:
          limits:
            cpu: 500m
          requests:
            cpu: 200m

---

apiVersion: v1
kind: Service
metadata:
  name: php-apache
  labels:
    run: php-apache
spec:
  type: LoadBalancer
  ports:
  - port: 80
  selector:
    run: php-apache

svc类型是lb

kubectl apply -f deployment.yaml

之后创建hpa

apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: php-apache
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: php-apache
  minReplicas: 1
  maxReplicas: 10
  targetCPUUtilizationPercentage: 50

指定当pod的cpu大于50%的时候扩展,而且最大的个数不超过10个

kubectl apply -f hpa.yaml

创建成功之后查看lb的ip,然后访问index.php

while sleep 0.01; do curl 10.10.100.167; done

之后使用下面命令查看pod的cpu情况

kubectl top pods -A

不出意外的话,等一段时间后pod就会自动增加

当你停止之后pod也会自动删除

欢迎关注我的博客www.bboy.app

Have Fun