首页
视频
资源
登录
原
Horizontal Pod Autoscaler (HPA) Pod动态扩容
4564
人阅读
2020/4/19 12:07
总访问:
2535587
评论:
0
收藏:
0
手机
分类:
容器编排
![Kubernetes](https://img.tnblog.net/arcimg/hb/4027cd04790f47abbb576c3daffe67f4.png "Kubernetes") >#Horizontal Pod Autoscaler (HPA) Pod动态扩容 [TOC] <br/> HPA简介 ------------ <br/> >我们都知道通过手工执行 `kubectl scale` 命令可以手工实现**Pod**的扩容于缩容。 >而后谷歌又发布了一个动态扩容与缩容的功能就是(HPA) <br/> 检测方式 ------------ <br/> >- CPUUtilizationPercentage 通过运算**Pod**的平均值来进行动态 >- 通过应用自定义的度量来进行,比如**Service**在每秒内的相应请求数(**TPS**或**QPS**) <br/> HAP define Yaml(v1) ------------ <br/> ```yaml apiVersion: autoscaling/v1 kind: HorizontalPodAutoscaler metadata: name: php-apache namespace: default spec: maxReplicas: 10 minReplicas: 1 scaleTargetRef: kind: Deployment name: php-apache targetCPUUtilizationPercentage: 90 ``` 等同于 ```bash kubectl autoscale deployment php-apache --cpu-percent=90 --min=1 --max=10 ``` >解释一下 | 名称 | 定义 | | ------------ | ------------ | | scaleTargetRef | 监控目标 | | scaleTargetRef->kind | 监控类型 | | scaleTargetRef->name | 监控名称 | | maxReplicas | 控制**Pod**最大副本数量 | | targetCPUUtilizationPercentage | 当CPU的值超过 **90%** 将自动进行扩容 | >简单一句话:监控名为php-apache的**Deployment**控制器,当控制器中的 **Pod** CPU值超过 **90%** 将进行扩容 **Pod** 的副本数量,扩容数量范围在 **1~10** 之间。 >注意:请提前预装Heapster组件或Metrics Server <br/> Pod简单实现水平扩容方式 ------------ <br/> ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: k8s-demo namespace: netcore labels: name: k8s-demo spec: replicas: 2 selector: matchLabels: name: k8s-demo template: metadata: labels: name: k8s-demo spec: containers: - name: k8s-demo image: aidasi/k8sdemoapi:v2 resources: requests: cpu: 200m memory: 200Mi limits: cpu: 1 memory: 500Mi ports: - containerPort: 80 imagePullPolicy: Always livenessProbe: httpGet: path: /WeatherForecast/1 port: 80 timeoutSeconds: 5 readinessProbe: httpGet: path: /WeatherForecast/1 port: 80 timeoutSeconds: 5 --- kind: Service apiVersion: v1 metadata: name: k8s-demo namespace: netcore spec: type: NodePort ports: - port: 80 targetPort: 80 selector: name: k8s-demo ``` <br/> HAP define Yaml(v2) ------------ <br/> ```yaml apiVersion: autoscaling/v2beta2 kind: HorizontalPodAutoscaler metadata: name: php-apache namespace: default spec: maxReplicas: 10 minReplicas: 1 scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: php-apache metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 50 ``` | 名称 | 定义 | | ------------ | ------------ | | metrics | 目标指标值。(当系统超过目标值时,自动进行扩缩操作) | | metrics-->type | 指标类型。 <br/> 1. **Resource**:<font style="text-decoration:underline"> 可以设置CPU(Utilization)与内存(AverageValue)(都是通过平均值进行计算)。</font> <br/> 2. **Pods**:<font style="text-decoration:underline">通过**Pod**副本的标志值进行平均值计算 .</font><br/>3. **Object**:<font style="text-decoration:underline">通过应用系统自定义指标值进行运算(如:ingress)</font> <br/> 注意:都需要预先启动 **Metrics Server** 服务 | <br/> >#### Pod类型的用法 <br/> >设置**Pod**的标志名为**packets-per-second** ,在目标 Pod 内存平均值为 1000 时,进行扩缩容操作。 ```yaml metrics: - type: Pods pod: name: packets-per-second target: type: AverageValue averageValue: 1k ``` <br/> >#### Object类型的用法 <br/> >设置标志名为**packets-per-second** ,其值来源于 **Ingress **“**main-route**”,将目标值(value)设置为**2000**,即在 **Ingress** 的每秒请求数量高达 **2000** 个时进行扩缩操作。 ```yaml metrics: - type: Object object: metric: name: requests-per-second describedObject: apiVersion: extensions/v1beta1 kind: Ingress name: main-route target: type: Value averageValue: 2k ``` Example Two: >设置标志名为 `http_requests` ,并且该资源对象具有标签 `verb=GET` ,在指定平均值达到**500**时触发扩缩容操作 ```yaml metrics: - type: Object object: metric: name: 'http_requests' selector: 'verb=GET' target: type: AverageValue averageValue: 500 ```
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739
👈{{preArticle.title}}
👉{{nextArticle.title}}
评价
{{titleitem}}
{{titleitem}}
{{item.content}}
{{titleitem}}
{{titleitem}}
{{item.content}}
尘叶心繁
这一世以无限游戏为使命!
博主信息
排名
6
文章
6
粉丝
16
评论
8
文章类别
.net后台框架
166篇
linux
17篇
linux中cve
1篇
windows中cve
0篇
资源分享
10篇
Win32
3篇
前端
28篇
传说中的c
4篇
Xamarin
9篇
docker
15篇
容器编排
101篇
grpc
4篇
Go
15篇
yaml模板
1篇
理论
2篇
更多
Sqlserver
4篇
云产品
39篇
git
3篇
Unity
1篇
考证
2篇
RabbitMq
23篇
Harbor
1篇
Ansible
8篇
Jenkins
17篇
Vue
1篇
Ids4
18篇
istio
1篇
架构
2篇
网络
7篇
windbg
4篇
AI
18篇
threejs
2篇
人物
1篇
嵌入式
2篇
python
13篇
HuggingFace
8篇
pytorch
9篇
opencv
6篇
最新文章
最新评价
{{item.articleTitle}}
{{item.blogName}}
:
{{item.content}}
关于我们
ICP备案 :
渝ICP备18016597号-1
网站信息:
2018-2024
TNBLOG.NET
技术交流:
群号656732739
联系我们:
contact@tnblog.net
欢迎加群
欢迎加群交流技术