ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

事件驱动组件Eventing

2022-02-24 21:31:07  阅读:163  来源: 互联网

标签:serving Eventing 事件驱动 并发 实例 knative 组件 Pod hello


 

Autoscaler计算Pod数的基本逻辑 指标收集周期与决策周期   ◼ Autoscaler每2秒钟计算一次Revision上所需要Pod实例数量   ◼ Autoscaler每2秒钟从Revision的Pod实例(Quueu-Proxy容器)上抓取一次指标数据,并将其(每秒的)平均值存储于单独的bucket中     ◆实例较少时,则从每个实例抓取指标     ◆实例较多时,则从实例的一个子集上抓取指标,因而计算出的Pod实例数量并非精准数值 决策过程   ◼ Autoscaler在Revision中检索就绪状态的Pod实例数量     ◆若就绪实例数量为0,则将其设定为1,即使用Activator作为实例   ◼ Autoscaler检查累积收集的可用指标     ◆若不存在任何可用指标,则将所需要的Pod实例数设置为0     ◆若存在累积的指标,则计算出窗口期内的平均并发请求数     ◆根据平均并发请求数和每实例的并发目标值计算出所需要的Pod实例数       ⚫ 窗口期内每实例的平均并发请求数 = Bucket中的样本值之和 / Bucket数量       ⚫ 每实例的目标并发请求数 = 单实例目标并发数 * 目标利用率       ⚫ 期望的Pod数 = 窗口期内每实例的并发请求数 / 每实例目标并发请求数     ◆Panic的触发条件       ⚫ 期望的Pod数 / 现有的Pod数 ≥ 2       ⚫ 60秒之后返回至Stable   Knative支持的Autoscaler     Knative支持基于KPA与HPA的自动缩放机制,但二者的功能略有不同   ◼ Knative Pod Autoscaler     ◆Knative Serving的核心组件,且默认即为启用状态     ◆支持缩容至0     ◆不支持基于CPU的自动缩放机制   ◼ Kubernetes Horizontal Pod Autoscaler     ◆Kubernetes系统上的组件     ◆不支持缩容至0     ◆支持基于CPU的自动缩放机制 另外,二者支持的指标也不尽相同   Autoscaler的全局配置   全局配置参数定义在knative-serving名称空间中的configmap/auto-scaler之中  相关的参数   ◼ container-concurrency-target-default:实例的目标并发数,即最大并发数,默认值为100;   ◼ container-concurrency-target-percentage:实例的目标利用率,默认为“0.7”;   ◼ enable-scale-to-zero:是否支持缩容至0,默认为true;仅KPA支持;   ◼ max-scale-up-rate:最大扩容速率,默认为1000;     ◆当前可最大扩容数 = 最大扩容速率 * Ready状态的Pod数量   ◼ max-scale-down-rate:最大缩容速率,默认为2;     ◆当前可最大缩容数 = Ready状态的Pod数量 / 最大缩容速率   ◼ panic-window-percentage:Panic窗口期时长相当于Stable窗口期时长的百分比,默认为10,即百分之十;   ◼ panic-threshold-percentage:因Pod数量偏差而触发Panic阈值百分比,默认为200,即2倍;   ◼ scale-to-zero-grace-period:缩容至0的宽限期,即等待最后一个Pod删除的最大时长,默认为30s;   ◼ scale-to-zero-pod-retention-period:决定缩容至0后,允许最后一个Pod处于活动状态的最小时长,默认为0s;   ◼ stable-window:稳定窗口期的时长,默认为60s;   ◼ target-burst-capacity:突发请求容量,默认为200;   ◼ requests-per-second-target-default:每秒并发(RPS)的默认值,默认为200;使用rps指标时生效;    
root@master01:/opt/knative-in-practise/serving/autoscaling# cat autoscaling-scale-to-zero.yaml 
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: hello
  namespace: default
spec:
  template:
    metadata:
      annotations:
        autoscaling.knative.dev/scale-to-zero-pod-retention-period: "1m5s" #决定缩容至0后,允许最后一个Pod处于活动状态的最小时长   
    spec:
      containers:
        - image: ikubernetes/helloworld-go
          ports:
            - containerPort: 8080
          env:
            - name: TARGET
              value: "Knative Autoscaling Scale-to-Zero"
   并发案例
root@master01:/opt/knative-in-practise/serving/autoscaling# cat autoscaling-concurrency.yaml 
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: hello
  namespace: default
spec:
  template:
    metadata:
      annotations:
        autoscaling.knative.dev/target-utilization-percentage: "60"  #目标利用率
        autoscaling.knative.dev/target: "10"  #单实例并发数,软限制,流量突发尖峰期允许超出
    spec:
      containers:
        - image: ikubernetes/helloworld-go
          ports:
            - containerPort: 8080
          env:
            - name: TARGET
              value: "Knative Autoscaling Concurrency"

 

apt install hey  #测试工具

hey -z 60s -c 20 -host "hello.magedu.com" http://192.168.80.251?sleep=100&prime=10000&bloat=5   并发20,持续60秒
root@master01:/opt/knative-in-practise/serving/autoscaling# kubectl get po -l serving.knative.dev/configuration=hello #60s
NAME                                      READY   STATUS             RESTARTS   AGE
hello-00003-deployment-57c8698c5f-cdqwj   3/3     Running            0          6m45s
hello-00003-deployment-57c8698c5f-czlgh   3/3     Running            0          27s

 

hey -z 60s -c 60 -host "hello.magedu.com" http://192.168.80.251?sleep=100&prime=10000&bloat=5   #最大10个,每个pod

root@master01:/opt/knative-in-practise/serving/autoscaling# kubectl get po -l serving.knative.dev/configuration=hello |grep -v ImagePul
NAME                                      READY   STATUS             RESTARTS   AGE
hello-00003-deployment-57c8698c5f-8jtqk   3/3     Running            0          30s
hello-00003-deployment-57c8698c5f-cdqwj   3/3     Running            0          8m32s
hello-00003-deployment-57c8698c5f-h47qt   3/3     Running            0          36s
hello-00003-deployment-57c8698c5f-q5pvd   3/3     Running            0          34s
hello-00003-deployment-57c8698c5f-t5gzz   3/3     Running            0          33s

 

标签:serving,Eventing,事件驱动,并发,实例,knative,组件,Pod,hello
来源: https://www.cnblogs.com/gxc888/p/15933630.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有