5

Bboysoul's Blog

 2 years ago
source link: https://www.bboy.app/2022/01/04/k8s%E6%B0%B4%E5%B9%B3%E6%89%A9%E5%AE%B9/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

k8s水平扩容

发表于

2022-01-04 更新于 2022-01-13 分类于 kubernetes

20220104-3.png

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK