Kubernetes HPA监控
HPA介绍
HAP通过收集来的监控指标分析所有Pod的负载情况,并且根据我们设定好的标准来自动扩容收缩ReplicationController、 Deployment、ReplicaSet 或 StatefulSet 中的 Pod 数量。
Metrics Server介绍
在HAP早期版本使⽤的是⼀个叫Heapster组件来提供CPU和内存指标的,在后期的版本k8s转向了使⽤MetrcisServer组件来提供Pod的CPU和内存指标,Metrcis Server通过Metrics API将数据暴露出来,然后我们就可以使⽤k8s的API来获取相应的数据。
Metrics Server安装
下载components.yaml
1
| wget https://github.com/kubernetes-sigs/metricsserver/releases/download/v0.4.0/components.yaml
|
如果下载不了,访问github的项目地址手动下载:https://github.com/kubernetes-sigs/metrics-server/releases?page=2

各节点下载Metrics Server
1
| docker pull ccr.ccs.tencentyun.com/mirrors/metrics-server:v0.4.0
|
修改components.yaml
1 2
| 设置跳过证书检查:- --kubelet-insecure-tls 修改为腾讯云镜像:ccr.ccs.tencentyun.com/mirrors/metrics-server:v0.4.0
|

创建资源
1
| kubectl apply -f components.yaml
|
查看node监控信息

查看Pod监控信息
1
| kubectl -n kube-system top pod
|

生成测试镜像
创建测试首页
1 2 3 4 5 6 7 8 9
| cat > index.php << 'EOF' <?php $x = 0.0001; for ($i = 0; $i <= 1000000; $i++) { $x += sqrt($x); } echo "OK!"; ?> EOF
|
创建dokerfile
1 2 3 4 5
| cat > dockerfile << 'EOF' FROM php:5-apache ADD index.php /var/www/html/index.php RUN chmod a+rx index.php EOF
|
生成镜像
1
| docker build -t php:v1 .
|
将镜像导出发送到其它节点
1 2 3
| docker save php:v1 > php.tar scp php.tar 172.16.32.145:/root/ scp php.tar 172.16.32.146:/root/
|
其它节点导入镜像
1
| docker load < /root/php.tar
|
创建Deployment资源
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| apiVersion: apps/v1 kind: Deployment metadata: name: php-apache spec: replicas: 1 selector: matchLabels: run: php-apache template: metadata: labels: run: php-apache spec: containers: - image: php:v1 imagePullPolicy: IfNotPresent name: php-apache ports: - containerPort: 80 protocol: TCP resources: requests: cpu: 200m
|
1
| kubectl apply -f php-dp.yaml
|
创建HPA资源
1 2 3 4 5 6 7 8 9 10 11 12 13
| apiVersion: autoscaling/v1 kind: HorizontalPodAutoscaler metadata: name: php-apache namespace: default spec: maxReplicas: 10 minReplicas: 1 scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: php-apache targetCPUUtilizationPercentage: 50
|
1
| kubectl apply -f php-hpa.yaml
|
查看HPA扩所容情况
1 2
| kubectl get hpa -w kubectl get pod -w
|
创建Service资源并访问进行压测
1 2 3 4 5 6 7 8 9 10 11
| apiVersion: v1 kind: Service metadata: name: php-apache labels: run: php-apache spec: ports: - port: 80 selector: run: php-apache
|
1
| kubectl apply -f hpa-svc.yaml
|

1
| while true; do wget -q -O- http://10.1.217.203; done
|
如果CPU使⽤率降下来了,k8s在5分钟左右后进⾏收缩