作为容器和Kubernetes应用程序的高级自动缩放器,Spot Ocean根据pod和特定容器的请求和指定约束自动持续执行缩放操作。这种容器驱动程序自动伸缩方法是Ocean如何利用和优化在云中运行容器所需的计算基础设施的核心。
为了帮助Kubernetes用户满足不同的业务需求,例如高可用性、低延迟和应用程序的受控饱和度,容器编排器有几种机制来管理pod调度。这些机制包括关联规则而且豆荚中断预算.最初在Kubernetes v1.16中引入,并在v1.19中进行了GA,Pod拓扑扩展约束被添加到主线Kubernetes功能集。该机制旨在将pod均匀地分布到多个节点拓扑上。
我们很高兴地分享Ocean现在完全支持pod拓扑扩展约束,并根据pod所要求的不同拓扑以及其他不断变化的动态进行扩展。
为什么使用pod拓扑扩展约束?
一个可能的用例是通过确保在多个可用性区域中均匀分布pod来实现应用程序的高可用性。这样,就可以通过多次滚动更新和扩展活动消除单点故障,从而保证服务的连续性。例如,如果应用程序在三个可用分区中有15个副本和节点,Kubernetes将在每个可用分区中的节点上主动调度5个副本。
自动缩放如何与Kubernetes pod拓扑约束一起工作?
在支持自动缩放的基础设施环境中,节点会不断地添加和删除,因此,基础设施自动缩放器必须始终了解pod请求的拓扑扩展。Spot Ocean主动在节点上打包pod,以减少计算资源浪费。因此,只有硬需求才会触发额外节点的供应。在传播受限的情况下,大洋意识到了这一点whenUnsatisfiable: DoNotSchedule被请求的maxSkew配置选项,并相应地执行操作。
当pod包含扩展约束时,Ocean可以识别它们的标签,并可以从所有相关拓扑提供节点。在这些pod的初始应用操作之前,需要每个拓扑至少有一个节点,这样Kuberentes才能意识到它们的存在。可以轻松地配置每个拓扑中的单个节点海洋空间特性或设置每个VNG最少节点数.
例如,一个Ocean虚拟节点组在两个可用分区中有两个子网(或者,两个vng在不同的AZ中有一个子网)。当应用以下Kubernetes部署清单时,Ocean将从两个子网/ vng扩展节点。
topologySpreadConstraints:
-maxSkew:1
topologyKey:topology.kubernetes.io /区
whenUnsatisfiable:DoNotSchedule
labelSelector:
matchLabels:
应用程序:myApp
当缩小规模时,Ocean会考虑传播限制,只有在以下情况下才会缩小maxSkew保存。
注意:海洋控制器1.0.78版或更晚是使用pod拓扑扩展约束的先决条件。
符合已知上游限制至于缩小部署规模,Ocean可以继续保持基础设施的不均匀分布。取消豆荚或更新扩展约束,然后执行滚动更新会触发Ocean自动重新平衡基础设施。
使用Ocean开始自动缩放
支持Kubernetes不断增长的功能集是Spot Ocean路线图中不可或缺的一部分,我们将继续添加我们自己的新功能,进一步扩展这些功能。的许多特性现货的海洋而且开始今天和点点一起!