个人博客网站备案,石家庄微网站建设,气象网站建设管理的不足,携程网站 建设平台分析文章目录 一、k8s弹性伸缩类型二、HPA原理三、metrics-server插件四、创建nginx提供负载测试五、部署HPA master操作即可 一、k8s弹性伸缩类型
Cluster-Autoscale: 集群容量(node数量)自动伸缩#xff0c;跟自动化部署相关的#xff0c;依赖iaas的弹性伸缩#xff0c;主要用… 文章目录 一、k8s弹性伸缩类型二、HPA原理三、metrics-server插件四、创建nginx提供负载测试五、部署HPA master操作即可 一、k8s弹性伸缩类型
Cluster-Autoscale: 集群容量(node数量)自动伸缩跟自动化部署相关的依赖iaas的弹性伸缩主要用于虚拟机容器集群Vertical Pod Autoscaler: 工作负载Pod垂直(资源配置)自动伸缩如自动计算或调整deployment的Pod模板limit/request依赖业务历史负载指标Horizontal-Pod-Autoscaler: 工作负载Pod水平自动伸缩如自动scale deployment的replicas依赖业务实时负载指标
二、HPA原理
HPA在k8s中也由一个controller控制controller会间隔循环HPA检查每个HPA中监控的指标是否触发伸缩条件默认的间隔时间为15s。一旦触发伸缩条件controller会向k8s发送请求修改伸缩对象statefulSet、replicaController、replicaSet子对象scale中控制pod数量的字段。k8s响应请求修改scale结构体然后会刷新一次伸缩对象的pod数量。伸缩对象被修改后自然会通过list/watch机制增加或减少pod数量达到动态伸缩的目的。
三、metrics-server插件 概念用来收集K8s集群中的资源使用情况。每15秒进行一次数据采集(可以通过-horizontal-pod-autoscaler-sync-period修改查询metrics的资源使用情况占用资源少每个Node占用1 mili core的CPU和2 MB内存目前只能对CPU和内存进行监控 下载yaml文件wget https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.6.1/components.yaml 修改yaml文件配置vi components.yaml 1. 注释- --kubelet-preferred-address-typesInternalIP,ExternalIP,Hostname在底下添加- --kubelet-preferred-address-typesInternalIP,Hostname,InternalDNS,ExternalDNS,ExternalIP # node address类型的优先权设置- --kubelet-insecure-tls # 取消安全验证
2. 注释image: registry.k8s.io/metrics-server/metrics-server:v0.6.3在底下添加image: registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server:v0.6.1部署kubectl apply -f components.yaml 查看podkubectl get pod -n kube-system 查看资源使用情况 1kubectl top node 2kubectl top pod -n kube-system ps查看全部空间的命令为kubectl top pod --all-namespaces
四、创建nginx提供负载测试 创建yamlvi /opt/pod-controller.yaml apiVersion: apps/v1
kind: Deployment
metadata:name: pod-controllerlabels:controller: deploy
spec:replicas: 1selector:matchLabels:app: nginx-podtemplate:metadata:labels:app: nginx-podspec:containers:- name: nginximage: nginx:latestports:- name: nginx-portcontainerPort: 80protocol: TCPresources: # 要设置每个容器最低使用的CPU不然测试不出效果requests:cpu: 0.1创建podkubectl apply -f /opt/pod-controller.yaml 暴露端口kubectl expose deployment pod-controller --namenginx-service --typeNodePort --port80 --target-port80 查看端口kubectl get svc 访问http://192.168.248.11:31409/
五、部署HPA 新建pod-hpa.yamlvi /opt/pod-hpa.yaml ps也可以直接设置控制器的资源限制kubectl autoscale deploy 控制器 --cpu-percent3 --min1 --max10 apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata: name: pod-hpa # hpa的名称labels:controller: hpa # 给hpa打标签
spec:minReplicas: 1 # 缩容最小Pod数量maxReplicas: 10 # 扩容最大Pod数量targetCPUUtilizationPercentage: 3 # 为了便于测试这里设置CPU使用率警戒线为3%scaleTargetRef: # 指定要控制的Deployment的信息apiVersion: apps/v1kind: Deploymentname: pod-controller创建podkubectl apply -f /opt/pod-hpa.yaml 查看HPA kubectl get hpa 查看服务pod个数kubectl get deploy pod-controller -o wide 使用postman测压工具不断访问http://192.168.248.11:31409/