1. EKS 弹性伸缩支持大Pod算法

1.1. 基本思想:

    对大Pod和小Pod进行区分,大pod运行在有“欢迎大Pod运行”的标签的主机上,小pod运行在“欢迎小Pod运行”的主机上。
    弹性自动添加的机器最开始没有标签。通过一个定时任务来进行“欢迎大Pod运行”和“欢迎小Pod运行”标签的管理。

    标签添加规则:
        每分钟检测一次,如果发现主机上没有标签,在这个情况下,检查主机上的pod,如果发现大pod,打上“欢迎大Pod运行”标签。
        如果发现的都是小pod,打上“欢迎小Pod运行”运行的标签。
    标签去除规则:
        每分钟扫描“欢迎小Pod运行”的主机,如果全部资源可以释放3个主机,进行碎片整理。
            碎片整理步骤: 去掉主机标签,进行驱逐操作。  【5分钟一次或者10分钟。】

        同时扫描“欢迎大pod运行”的主机,如果主机上没有pod,把标签删除【T1】 


注: 大Pod是使用资源多的,如当前的PHP服务, 小Pod是使用资源少的。
         这里说的pod只包括应用的pod,k8s系统默认的pod忽略。
         大pod从request获取

1.2. 使用需要的操作:

    1.在大pod 上配置软亲和性“尽量到有欢迎大Pod运行”的主机上执行,同时尽量不在“欢迎小pod运行”的主机上执行。
    2.在小pod上配置软亲和性“尽量到有欢迎小Pod运行”的主机上执行,同时尽量不在“欢迎大pod运行”的主机上执行。
    3.保持原来的两个lambda的弹性伸缩逻辑。
    4.运行上述的算法。

1.3. 几个场景描述算法的运作逻辑:

    1. 刚启动时:
          刚启动时,所有主机都没有标签,pod和主机的关系有四种,A: 主机上只执行了大pod,B: 主机上只执行了小pod,
          C:主机上执行了大pod和小pod,D:主机空闲。
          通过上述算法执行后,会给A和C类型的主机打上“欢迎大Pod运行”标签,会给B类型主机打上“欢迎小Pod运行”标签,
          D类主机不打标签。

          在pod滚动更新的过程中,C类主机会慢慢消失,只剩下A、B、D种类型的情况。

     2.弹性扩展主机的情况下:
          主机扩展是因为要运行更多的pod,主机刚开机的时候是不知道是因为小pod资源不足还是大pod资源不足而引起的扩展。

          大pod变多导致的扩展:
              因为小pod还可以在原来的打有“ 欢迎小Pod运行”的主机上还足够运行,新开的机器,小pod不会运行到上面,也就不会
              因为小pod占用了新机器的部分资源而使得新开的机器运行不了大pod。
              大pod将能够正常的运行在新开的机器上,同时本算法会在一分钟后给他打上“欢迎大Pod运行”标签。

         小pod变多导致的扩展:
             小pod在“ 欢迎小Pod运行”的主机上没有足够的资源,小pod的数量变多的情况下,会自动的使用新开的机器,因为上面没有任何标签。
             本算法随后会给小pod新占用的机器打上“欢迎小Pod运行”标签。 
             小pod随后会涌入被第一个小pod占领的主机。不会无限的污染新开的空闲主机。

      3.弹性收缩的情况
           如果是大pod数量变少导致的收缩,原来的lambda算法能正常的进行回收。【T1】
           如果是小pod数量变少导致的搜索,这种情况下。原来的lambda有部分可能可以正常回收,
               另一种可能是,“欢迎小Pod运行”的主机的资源利用率变低,但是不会触发回收。着时候需要进行标签去除的算法,
               进行算法中的驱逐,驱逐后“欢迎小Pod运行”主机变少等待原来的lambda正常回收。
Copyright 2020 - 2020. all right reserved,powered by Gitbook该文件修订时间: 2024-03-10 12:41:21

results matching ""

    No results matching ""