k8s的弹性伸缩
k8s弹性伸缩自动扩缩容HPA要实现扩缩容得先安装Metrics Server服务因为自动扩缩容是通过监控容器得cpu或者memory得上限来实现弹性伸缩的在 Kubernetes 集群中Metrics Server 是一个用于收集和聚合集群内部组件的性能指标数据的服务。它可以收集 CPU 使用率、内存使用率、网络 I/O 等指标并将这些指标暴露给 Kubernetes API Server以供其他组件使用在弹性伸缩中Metrics Server 可以帮助 Kubernetes 自动地监测集群中各个 Pod 的资源使用情况并根据配置的规则进行自动扩展或缩减提示我们使用kubeeasy部署k8s已经部署过Metrics Server服务了1、部署nginx[rootk8s-master-node1 ~]# vi deployment-nginx.yamlapiVersion: apps/v1 kind: Deployment metadata: labels: app: nginx name: nginx namespace: default spec: replicas:3selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx imagePullPolicy: Always ports: - containerPort:80resources: requests:#容器初始值大小memory: 50Mi cpu:0.5limits:#容器限制最大值memory: 100Mi cpu:1[rootk8s-master-node1 ~]# kubectl apply -f deployment-nginx.yaml2、配置service服务暴露端口[rootk8s-master-node1 ~]# kubectl expose deployment nginx --port8080 --target-port80 --typeNodePort[rootk8s-master-node1 ~]# kubectl get svcNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S)AGE kubernetes ClusterIP10.96.0.1none443/TCP 51d nginx NodePort10.96.31.108none8080:53756/TCP 32m[rootk8s-master-node1 ~]# kubectl get podsNAME READY STATUS RESTARTS AGE nginx-75b57cd77d-dbdzg1/1 Running023m nginx-75b57cd77d-dnrjk1/1 Running022m nginx-75b57cd77d-h7nlx1/1 Running032m3、配置hpa重点[rootk8s-master-node1 ~]# kubectl autoscale deployment nginx --min3 --max10 --cpu-percent50[rootk8s-master-node1 ~]# kubectl get hpaNAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE nginx Deployment/nginx0%/50%310334mkubectl autoscale Kubernetes 提供的“快速创建 HPA”的命令–min3 无论多空闲都至少保留 3 个 Pod–max10 再忙也不会超过 10 个 Pod–cpu-percent10 目标 CPU 使用率 10%HPA 的逻辑是如果当前 CPU高于 50%→ 扩容如果当前 CPU低于 50%→ 缩容4、使其扩缩容扩容前以下任选其一就好其共同目的都是提升cpu使其扩容1用多几台主机使用以下命令访问暴露的端口[rootk8s-master-node1 ~]# while true;do curl -s 192.168.100.10:53756 /dev/null;done[rootk8s-master-node1 ~]# kubectl get hpa -w[rootk8s-master-node1 ~]# kubectl get hpaNAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE nginx Deployment/nginx53%/50%310342m2进入nginx容器里面[rootk8s-master-node1 ~]# kubectl exec -it nginx-75b57cd77d-dbdzg /bin/bashrootnginx-75b57cd77d-dbdzg:/# while true; do:; done[rootk8s-master-node1 ~]# kubectl get hpaNAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE nginx Deployment/nginx52%/50%310342m现在我们可以看见pod由3个增加到5个[rootk8s-master-node1 ~]# kubectl get podsNAME READY STATUS RESTARTS AGE nginx-75b57cd77d-22bbf1/1 Running083s nginx-75b57cd77d-dbdzg1/1 Running037m nginx-75b57cd77d-dnrjk1/1 Running046m nginx-75b57cd77d-h7nlx1/1 Running046m nginx-75b57cd77d-mkmbf1/1 Running083s当cpu降回10%后pod会减少到3个[rootk8s-master-node1 ~]# kubectl get podsNAME READY STATUS RESTARTS AGE nginx-75b57cd77d-dbdzg1/1 Running043m nginx-75b57cd77d-dnrjk1/1 Running052m nginx-75b57cd77d-h7nlx1/1 Running052m扩容后
上一篇/下一篇内容由系统自动关联
返回资讯列表 →