网站建设与用户需求分析,网站着陆率,wordpress小说站模板,济南网站建设与优化一、概述 Metrics-Server组件目的#xff1a;获取集群中pod、节点等负载信息#xff1b; hpa资源目的#xff1a;通过metrics-server获取的pod负载信息#xff0c;自动伸缩创建pod#xff1b; 参考链接#xff1a; 资源指标管道 | Kubernetes https://github.com/kuberne…一、概述 Metrics-Server组件目的获取集群中pod、节点等负载信息 hpa资源目的通过metrics-server获取的pod负载信息自动伸缩创建pod 参考链接 资源指标管道 | Kubernetes https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/metrics-server GitHub - kubernetes-sigs/metrics-server: Scalable and efficient source of container resource metrics for Kubernetes built-in autoscaling pipelines. 二、安装部署Metrics-Server组件 就是给k8s集群安装top命令的意思
1下载Metrics-Server资源清单
· 第一种方式github下载 [rootk8s231 metricsserver]# wget https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/high-availability-1.21.yaml · 第二种方式本地上传安装包
百度云盘 链接https://pan.baidu.com/s/1axn44_AsbHQxIMw9nuNVMw?pwdjtqb 提取码jtqb 2编辑Metrics-Server的资源清单 [rootk8s231 metricsserver]# vim high-availability-1.21.yaml spec: affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchLabels: k8s-app: metrics-server namespaces: - kube-system topologyKey: kubernetes.io/hostname containers: - args: #启动允许使用不安全的证书 - --kubelet-insecure-tls - --cert-dir/tmp - --secure-port10250 - --kubelet-preferred-address-typesInternalIP,ExternalIP,Hostname - --kubelet-use-node-status-port - --metric-resolution15s #image: registry.k8s.io/metrics-server/metrics-server:v0.7.0 image: registry.aliyuncs.com/google_containers/metrics-server:v0.6.3 3创建Metrics-Server资源 [rootk8s231 metricsserver]# kubectl apply -f high-availability-1.21.yaml 4验证Metrics-Server是否成功安装
· 查看pod [rootk8s231 metricsserver]# kubectl get pods -A · 使用top命令测试是否管用
查节点的top值 [rootk8s231 metricsserver]# kubectl top node 查看pod的top值 [rootk8s231 metricsserver]# kubectl top pods -A 三、hpa资源实现pod水平伸缩自动扩缩容 1当资源使用超一定的范围会自动扩容但是扩容数量不会超过最大pod数量 2扩容时无延迟只要监控资源使用超过阔值则会直接创建pod 3当资源使用率恢复到阔值以下时需要等待一段时间才会释放大概时5分钟
1编辑deployment资源 [rootk8s231 hpa]# cat deploy.yaml apiVersion: apps/v1 kind: Deployment metadata: name: dm-hpa spec: replicas: 1 selector: matchLabels: k8s: xinjizhiwa template: metadata: labels: k8s: xinjizhiwa spec: containers: - name: c1 image: centos:7 command: - tail - -f - /etc/hosts resources: requests: cpu: 50m limits: cpu: 150m 2编写hpa资源清单 [rootk8s231 hpa]# cat hpa.yaml apiVersion: autoscaling/v1 kind: HorizontalPodAutoscaler metadata: name: hpa-tools spec: #指定pod最大的数量是多少自动扩容的上限 maxReplicas: 10 #指定pod最小的pod数量是多少自动缩容的下限 minReplicas: 2 #弹性伸缩引用的目标是谁 scaleTargetRef: #目标资源的api apiVersion: apps/v1 #目标资源的类型kind kind: Deployment #目标资源的名称metadata-name是什么 name: dm-hpa #使用cpu阈值使用到达多少开始扩容、缩容 #95% targetCPUUtilizationPercentage: 95 3创建hpa和deploy资源 [rootk8s231 hpa]# kubectl apply -f . 4查看hpa资源 [rootk8s231 hpa]# kubectl get hpa -o wide 到这里就已经实现了自动扩缩容的pod副本了
至此咱们的metrics-server组件和hpa资源就学习完毕了
四、压测测试
1进入pod安装stress工具
· 进入pod容器 [rootk8s231 hpa]# kubectl exec dm-hpa-5bb4dd448d-ks2rt -it -- sh · 安装aili源和epel源 sh-4.2# yum -y install wget sh-4.2# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo sh-4.2# wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo · 安装压测工具 sh-4.2# yum -y install stress 2开始使用命令压测pod sh-4.2# stress --cpu 8 --io 4 --vm 2 --vm-bytes 128M --timeout 20m 3查看hpa资源的负载情况 [rootk8s231 ~]# kubectl get hpa -o wide 可以看到
1我们创建的deploy资源只有一个副本
2我们创建的hpa资源之后设置最小值是2最大值是10
3我们在查看pod可以看见pod变成了2个
4我们进入容器开始压测将负载压测到超过95%
5再次查看pod发现变成了3个自动创建了一个
6关闭压测5分钟后pod有回归到了2个
7至此hpa的pod自动伸缩测试完毕