业务高速发展阶段,高低峰流量相差悬殊、并发逐渐增高、突增流量时间达到秒级,节点池的扩容速度不足以满足业务需求,还有购置服务器时库存不足的风险。虚拟节点是 TKE 提供的一种弹性调度能力,提供了近乎无限资源的扩容能力,可以直接将 Pod 调度至弹性容器服务 EKS 维护的云上资源中,无需扩容节点。相比节点池,虚拟节点的扩容、缩容流程简化了购买、初始化、退还服务器的流程,大大提升了弹性的速度,尽可能降低在扩容流程中可能出现的失败,使得弹性更快、更高效、更节省成本。在弹性效率层面,虚拟节点可在数十秒内启动数以百计的 Pod,能够很好的应对 S11 这类高爆发业务场景。在成本层面,避免了普通节点由于无法完美分配 Pod 申请的资源而产生的 buffer 资源,节省了资源成本。在此基础上,我们结合业务侧数据,采取自动化资源预热的方式应对高频的突增流量场景;运营类业务场景则需要和运营部门紧密结合做好手动扩容的准备。
网络转发方案优化
存在的问题
集群提供公网访问入口时,默认情况下外部流量经由集群节点 NodePort 转发至集群内部,当虚拟节点中部署的 Pod 数量较少,集群整体负载较低时,该模式不会有网络转发性能瓶颈。不过随着部署在虚拟节点中的Pod数量增大,集群整体负载升高,就需要添加更多的节点用于网络转发,这与自动伸缩、快速扩容、降低成本的目标背道而驰。
优化方案
开启 VPC-CNI 后采用直连 Pod 模式,容器与节点分布在同一网络平面,每个 Pod 分配有固定 IP,网络直接由 CLB 转入 Istio Ingress,不再经由 NodePort 转发,提高了网络转发效率,集群也不在需要网络转发节点,大大提高了集群的扩容能力。该模式下,集群扩容上限受到集群所分配网段可用 IP 数的限制,因此需要提前做好规划,避免集群扩容受限。
最终效果
通过虚拟节点和 VPC-CNI 模式下直连 Pod 的结合,目前集群整体承载能力有了很大的提升,在成本控制方面也有了长足的进步。