搜索

Pod控制器详解(HPA)


发布时间: 2022-11-24 22:57:01    浏览次数:33 次

Horizontal Pod Autoscaler(HPA)

前面可以实现通过手工执行`kubectl scale`命令实现Pod扩容或缩容,但是这显然不符合Kubernetes的定位目标--自动化、智能化。

Kubernetes期望可以实现通过监测Pod的使用情况,实现pod数量的自动调整,于是就产生了Horizontal Pod Autoscaler(HPA)这种控制器。

HPA可以获取每个Pod利用率,然后和HPA中定义的指标进行对比,同时计算出需要伸缩的具体值,最后实现Pod的数量的调整。

其实HPA与之前的Deployment一样,也属于一种Kubernetes资源对象,它通过追踪分析RC控制的所有目标Pod的负载变化情况,来确定是否需要针对性地调整目标Pod的副本数,这是HPA的实现原理。

接下来,我们来做一个实验

安装metrics-server(v0.3.6)
# 安装git
[root@master ~]# yum install git -y
# 获取metrics
-server, 注意使用的版本 [root@master ~]# git clone -b v0.3.6 https://github.com/kubernetes-incubator/metrics-server
# 修改deployment, 注意修改的是镜像和初始化参数 [root@master ~]# cd /root/metrics-server/deploy/1.8+/ [root@master 1.8+]# vim metrics-server-deployment.yaml
按图中添加下面选项 hostNetwork:
true image: registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server-amd64:v0.3.6 args: - --kubelet-insecure-tls - --kubelet-preferred-address-types=InternalIP,Hostname,InternalDNS,ExternalDNS,ExternalIP

# 安装metrics-server

[root@master 1.8+]# kubectl apply -f ./

# 查看pod运行情况

[root@master 1.8+]# kubectl get pod -n kube-system

# 使用kubectl top node 查看资源使用情况

注:刚安装好,metrics-server要先进行数据采集,需要一点儿时间,要稍等一会再执行命令查看

[root@master 1.8+]# kubectl top node
[root@master 1.8+]# kubectl top pod -n kube-system

# 至此,metrics-server安装完成

准备deployment和servie

# 创建deployment

[root@master 1.8+]# kubectl run nginx --image=nginx:1.17.1 --requests=cpu=100m -n dev

注:1.18版本及以后用kubectl run不能创建deployment,建议参考下面操作

用命令创建deployment,生成yaml
生成deployment的yaml文件,并修改资源限制
[root@master ~]# kubectl create deployment nginx --image=nginx:1.17.1 -n dev --dry-run=client -o yaml > nginx.yaml

[root@master ~]# kubectl create -f nginx.yaml
deployment.apps/nginx created

[root@master ~]# kubectl get deploy,pod -n dev

创建service
[root@master ~]# kubectl expose deployment nginx --type=NodePort --port=80 -n dev
[root@master ~]# kubectl get deploy,pod,svc -n dev

部署HPA

创建pc-hpa.yaml文件,内容如下:

apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: pc-hpa
  namespace: dev
spec:
  minReplicas: 1  #最小pod数量
  maxReplicas: 10 #最大pod数量
  targetCPUUtilizationPercentage: 3 # CPU使用率指标,这里限制为3%
  scaleTargetRef:   # 指定要控制的nginx信息
    apiVersion:  apps/v1
    kind: Deployment
    name: nginx

# 创建hpa

[root@master ~]# vim pc-hpa.yaml
[root@master ~]# kubectl create -f pc-hpa.yaml

# 查看hpa

[root@master ~]# kubectl get hpa -n dev

测试

192.168.1.50:32178

这里使用脚本测试

vim test.sh

#!bin/bash
while true
do
curl  192.168.1.50:32178 &> /dev/null
done

chmod 755 test.sh
bash test.sh

hpa变化

[root@master ~]# kubectl get hpa -n dev -w

deployment变化

[root@master ~]# kubectl get deployment -n dev -w

pod变化

[root@master ~]# kubectl get pods -n dev -w

参考

黑马B站k8s课程https://www.bilibili.com/video/BV1Qv41167ck/ https://gitee.com/yooome/golang/blob/main/k8s%E8%AF%A6%E7%BB%86%E6%95%99%E7%A8%8B-%E8%B0%83%E6%95%B4%E7%89%88/k8s%E8%AF%A6%E7%BB%86%E6%95%99%E7%A8%8B.md https://www.yuque.com/fairy-era/yg511q/xyqxge
免责声明 Pod控制器详解(HPA),资源类别:文本, 浏览次数:33 次, 文件大小:-- , 由本站蜘蛛搜索收录2022-11-24 10:57:01。此页面由程序自动采集,只作交流和学习使用,本站不储存任何资源文件,如有侵权内容请联系我们举报删除, 感谢您对本站的支持。 原文链接:https://www.cnblogs.com/gys001/p/16916462.html