1. 在luffy命名空间创建nginx的deploy资源¶
0. 创建hpa目录¶
mkdir -p /k8s/hpa/nginx
cd /k8s/hpa/nginx
1. 创建基于nginx的deployment的yaml文件¶
vim deploy-nginx.yaml
########################################
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
namespace: luffy
spec:
replicas: 1 #指定Pod副本数
selector: #指定Pod的选择器
matchLabels:
app: nginx
template:
metadata:
labels: #给Pod打label
app: nginx
spec:
containers:
- name: nginx
image: nginx:alpine
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
resources:
requests:
memory: 100Mi
cpu: 50m
limits:
memory: 500Mi
cpu: 100m
2. 创建nginx的svc¶
vim svc-nginx.yaml
###########################
apiVersion: v1
kind: Service
metadata:
name: nginx
namespace: luffy
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx
type: ClusterIP
3. 创建nginx资源¶
kubectl apply -f .
4. 查看pod¶
kubectl -n luffy get pod
root@k8s-master:/k8s/hpa/nginx# vim deploy-nginx.yaml
root@k8s-master:/k8s/hpa/nginx#
root@k8s-master:/k8s/hpa/nginx# vim svc-nginx.yaml
root@k8s-master:/k8s/hpa/nginx#
root@k8s-master:/k8s/hpa/nginx# kubectl apply -f .
deployment.apps/nginx created
service/nginx created
root@k8s-master:/k8s/hpa/nginx# kubectl -n luffy get pod
NAME READY STATUS RESTARTS AGE
nginx-79585d8b96-fx8th 1/1 Running 0 10s
2. 测试hpa动态扩容¶
1. 创建deployment的hpa¶
cd /k8s/hpa/nginx
vim hpa-nginx.yaml
apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
name: hpa-nginx
namespace: luffy
spec:
maxReplicas: 3
minReplicas: 1
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: nginx
metrics:
- type: Resource
resource:
name: memory
target:
type: Utilization
averageUtilization: 80
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 20
2. 生成hpa¶
kubectl apply -f hpa-nginx.yaml
kubectl -n luffy get hpa
root@k8s-master:/k8s/hpa/nginx# vim hpa-nginx.yaml
root@k8s-master:/k8s/hpa/nginx#
root@k8s-master:/k8s/hpa/nginx# kubectl apply -f hpa-nginx.yaml
horizontalpodautoscaler.autoscaling/hpa-nginx created
root@k8s-master:/k8s/hpa/nginx#
root@k8s-master:/k8s/hpa/nginx# kubectl -n luffy get hpa
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
hpa-nginx Deployment/nginx <unknown>/80%, <unknown>/20% 1 3 0 8s
3. 验证:¶
1. 切换到slave节点或其他机器操作¶
2. 安装压力测试工具¶
#slave1节点
#安装ab命令
sudo apt-get install apache2-utils
3. 查看service的IP¶
#master
#查看svcIP
kubectl -n luffy get svc nginx
root@k8s-master:/k8s/hpa/nginx# kubectl -n luffy get svc nginx
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
nginx ClusterIP 10.106.50.133 <none> 80/TCP 3m58s
4. 手动将deployment副本数调为1¶
# 为了更快看到效果,先调整副本数为1
kubectl -n luffy scale deploy nginx --replicas=1
5. 监控hpa状态¶
#master节点
# 查看hpa状态
kubectl -n luffy get hpa -w
root@k8s-master:/k8s/hpa/nginx# kubectl -n luffy get hpa -w
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
hpa-nginx Deployment/nginx 2%/80%, 0%/20% 1 3 1 3m51s
6. 监控pod数量¶
#查看pod数量
kubectl -n luffy get pod -w
root@k8s-master:~# kubectl -n luffy get pod -w
NAME READY STATUS RESTARTS AGE
nginx-79585d8b96-fx8th 1/1 Running 0 5m29s
7. 模拟大量用户访问¶
#slave1
# 模拟1000个用户并发访问页面10万次
ab -n 100000 -c 1000 http://10.106.50.133:80/index.html
root@k8s-worker-node1:~# ab -n 100000 -c 1000 http://10.106.50.133:80/index.html
This is ApacheBench, Version 2.3 <$Revision: 1843412 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking 10.106.50.133 (be patient)
Completed 10000 requests
8. 查看hpa状态和pod数量¶
#hpa资源满了,当ab命令结束后,又降下来了
root@k8s-master:/k8s/hpa/nginx# kubectl -n luffy get hpa -w
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
hpa-nginx Deployment/nginx 2%/80%, 0%/20% 1 3 1 3m51s
hpa-nginx Deployment/nginx 3%/80%, 22%/20% 1 3 1 5m31s
hpa-nginx Deployment/nginx 3%/80%, 22%/20% 1 3 2 5m46s
hpa-nginx Deployment/nginx 3%/80%, 0%/20% 1 3 2 6m31s
#又动态的启动了一个pod,ab命令结束一段时间后,关掉了一个pod
root@k8s-master:~# kubectl -n luffy get pod -w
NAME READY STATUS RESTARTS AGE
nginx-79585d8b96-fx8th 1/1 Running 0 5m29s
nginx-79585d8b96-m95pn 0/1 Pending 0 0s
nginx-79585d8b96-m95pn 0/1 Pending 0 0s
nginx-79585d8b96-m95pn 0/1 ContainerCreating 0 0s
nginx-79585d8b96-m95pn 1/1 Running 0 2s
最后更新:
2022-02-22 04:55:01