浙江网站建设而,梦幻西游源码论坛,网站建设团队扬州,做网站为什么差价很大前提条件
安装有**Metrics Server**,HPA的运行监控指标需要由Metrics Server 提供
文档#xff1a;https://github.com/kubernetes-sigs/metrics-server?tabreadme-ov-file#readme 快速自动缩放#xff0c;每15秒收集一次指标(可配置)。 资源效率#xff0c;为集群中的每…前提条件
安装有**Metrics Server**,HPA的运行监控指标需要由Metrics Server 提供
文档https://github.com/kubernetes-sigs/metrics-server?tabreadme-ov-file#readme 快速自动缩放每15秒收集一次指标(可配置)。 资源效率为集群中的每个节点使用1 milli核心CPU和2 MB内存。 可扩展支持多达5000个节点群集。
需要替换成国内的阿里云镜像::
image: registry.aliyuncs.com/google_containers/metrics-server:v0.6.4在yaml文件中的 增加 –kubelet-insecure-tls 跳过TLS生产环境不建议使用次参数
生产中建议启用TLS Bootstrap 证书签发
containers:- args:...- --kubelet-insecure-tls工作流程 HPA可以获取每个Pod利用率然后和HPA中定义的指标进行对比同时计算出需要伸缩的具体值最后实现Pod的数量的调整。PAH属于一种Kubernetes资源对象它通过追踪分析RC控制的所有目标Pod的负载变化情况来确定是否需要针对性地调整目标Pod的副本数。 HorizontalPodAutoscaler 控制器访问支持扩缩的相应工作负载资源例如Deployment 和 StatefulSet。 这些资源每个都有一个名为 scale 的子资源该接口允许你动态设置副本的数量并检查它们的每个当前状态。 有关 Kubernetes API 子资源的一般信息 缩扩容算法https://kubernetes.io/zh-cn/docs/tasks/run-application/horizontal-pod-autoscale/
#ceil函数表示返回大于或者等于指定表达式的最小整数
期望副本数 ceil[当前副本数 * (当前指标 / 期望指标)]支持指标:
resource 核心指标包含**cpu和memory**两种被弹性伸缩的pod对象中容器的requests和limits中定义的指标。
object k8s内置对象的特定指标需自己实现适配器
pods 应用被弹性伸缩的pod对象的特定指标例如每个pod每秒处理的事务数需自己实现适配器
external 非k8s内置对象的自定义指标需自己实现适配器
部署测试
1.部署一个测试服务
apiVersion: apps/v1
kind: Deployment
metadata:name: php
spec:selector:matchLabels:run: php-apachereplicas: 1template:metadata:labels:run: php-apachespec:containers:- name: php-apacheimage: nginxports:- containerPort: 80resources:limits:cpu: 500mrequests:cpu: 200m
---
apiVersion: v1
kind: Service
metadata:name: php-apachelabels:run: php-apache
spec:ports:- port: 80selector:run: php2.创建一个PHA
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:name: php-apachenamespace: default
spec:maxReplicas: 10metrics:- type: Resourceresource:name: cputarget:averageUtilization: 10type: Utilization- type: Resourceresource:name: memorytarget:averageValue : 200Mitype: AverageValueminReplicas: 1scaleTargetRef:apiVersion: apps/v1kind: Deploymentname: php-apache######或者通过 创建HPA
kubectl autoscale ResouceType ResourceName --cpu-percent50 --min1 --max10
#例子:
kubectl autoscale deployment php-apache --cpu-percent50 --min1 --max10#表示按照资源的百分比
metrics:- resource:name: cputarget:averageUtilization: 10type: Utilization
#如果是想采用绝对值采用
metrics:- resource:name: cputarget:averageValue : 10type: AverageValue
3.压力测试
#启动一个容器循环调用后台服务模拟压测 http://10.233.26.224 改为后端svc地址
kubectl run -i --tty load-generator2 --rm --imagebusybox:1.28 --restartNever -- /bin/sh -c while sleep 0.01; do wget -q -O- http://10.233.26.224; done
4.观察deployment 的pod的变化以及PHA的变化
#观察pha
kubectl get pha --watch
#观察pod
kubectl get po