1、ACK 云原生彈性方案赫曦阿里云高級技術專家云原生時代的加速器Contents目錄01云原生技術助力企業降本增效02阿里云云原生彈性解決方案03企業云原生彈性案例與解析云原生技術助力企業降本增效01云原生技術加速企業IT信息化轉型更多的企業認識到IT信息化轉型的重要性云原生作為當下上云的新范式,成為很多企業加速IT技術架構彎道超車的快捷渠道如何用上好云、用好云、用省云成為了企業IT信息化轉型中的核心關注點,降本增效是企業云原生上云的一致性共識云原生彈性降本增效30%成本下降阿里云云原生彈性解決方案02阿里云云原生彈性解決方案根據應用業務的場景,提供豐富靈活的策略-豐富場景化應用層資源層滿足平臺
2、層的穩定性,提供穩定、快速、規?;闹?保障穩定性HPA基于資源閾值的容器水平伸縮VPACronHPA容器定時伸縮KEDA事件驅動伸縮ack-virtual-node無服務器資源交付ACK Pro Scheduler無服務器自動伸縮AHPA預測伸縮容器水平伸縮容器縱向伸縮United Deployment精細化調度彈性cluster-autoscaler第一代 節點自動伸縮ECS資源即時彈性第二代 節點自動伸縮ECI資源ACK應用層彈性-水平伸縮容器水平伸縮器應用負載Deployment指標時間事件PodPodPodPod基于閾值模型進行彈性伸縮典型場景 在線業務【微服務、網站、API服務】
3、基于資源閾值的水平伸縮基于時間的水平伸縮基于可預期的時間,提前規劃擴縮容典型場景 業務高低峰具有明顯時間相關【外賣、大促】基于事件的水平伸縮基于事件驅動的彈性,可實現Pod縮容至0,從0開始擴容典型場景 消費事件來自動擴縮【MQ、MongoDB】ACK水平伸縮-彈性指標豐富ACK水平伸縮-泛化彈性對象泛化對象 實現了subresource/scale接口的對象都可以被彈性伸縮/scale對象需要實現replicas與labelSelector兩個接口可擴縮對象 內置的對象Deployment、StatefulSet 實現了scale接口的對象,例如:OpenKruise阿里云擴展的彈性對象 O
4、penKruise-云原生優化的Kubernetes應用負載 United Deployment-精細化調度的彈性復雜 Presto Cluster -可伸縮的Presto集群資源層彈性核心問題成本效率規模兼容運維成本支持超賣是否使用Spot運維使用方式:免運維-開箱即用;強運維-持續投入的配置和管理運維難度兼容自定義內核參數Daemonset等場景的支持效率單次交付效率持續交付效率規模對底層API與APIServer的沖擊可支持集群容量的上限cluster-autoscaler托管節點池A實例規格配置ecs.c7.xlarge、ecs.c7.2xlargecluster-autoscaler
5、托管節點池B實例規格配置ecs.c8.3xlarge、ecs.c8.4xlargePending PodsPodPodPod交付不確定運維復雜彈性效率生態閉環Nodeecs.c8.3xlarge/ecs.c8.4xlargecluster-autoscaler的挑戰節點池個數Scaling Rule節點池B-Node模擬Nodeecs.c8.3xlarge模擬調度節點池A-Node模擬Nodeecs.c7.xlargeAll NodesAll PodsAll DaemonsetAll PVCAll StorageClassList K8s對象信息All 節點池配置All 實例狀態All伸縮活動
6、狀態List ACK節點池信息更輕更準更YOU交付的不確定性管理運維復雜彈性效率生態閉環cluster-autoscaler的挑戰更快ACK即時彈性特性ACK即時彈性-第二代節點伸縮組件托管節點池A事件驅動的更快速、更穩定、更簡單的下一代彈性伸縮控制器Estimator 模擬調度生成資源供給計劃實例規格匹配ecs.c7.xlarge、ecs.c7.2xlargeProvisioner 根據Scaling Plan創建節點資源供給條件過濾最優預裝箱策略ACK 控制面即時彈性Scaler托管節點池B實例規格匹配ecs.c8.*Watch Pending PodsPodPodPod裝箱結果PodPo
7、dPodScaling Plan節點池B、規格3XPodcluster-autoscalerACK clusterNodePoolNodePodPodPodNodePodPodNodeNodePool即時彈性ACK clusterNodePoolNodePodPodPodPodNodePodPodNode資源交付確定性Pending PodsPodcluster-autoscaler最小靈敏度15sACK clusterNodePool即時彈性靈敏度3s,耗時無明顯衰減ACK clusterNodePoolPodPodtime60s10s20sPodPodPodPodPodPodBatch1P
8、odPodPodPodNode1PodPodPodPodNode2Batch2PodPodPodPodNode3PodPodPodPodNode2PodPodPodPodNode3PodPodPodPodNode10s65s90s45s55stimetime彈性效率Pending PodsPodPodPodPod長時間等待資源,如何排查?節點池彈性伸縮活動節點池配置實例庫存情況云盤庫存情況調度器日志Apiserver限流cluster-autoscaler logsPod詳情Pod Events其他pod情況新增Nodes應用業務層應用平臺層基礎設施層網絡資源庫存實例添加日志透出、篩選、去重P
9、od Events簡化運維配置建議彈性大盤實時感知擴容-供給策略Nodeoolcluster-autoscalerNodeool即時彈性節點個數擴容計劃節點個數可用區A實例規格1Spot擴容計劃縮容-節點選擇NodeAcluster-autoscaler即時彈性用戶系統可用區優先級自定義Spot限定實例優先級可擴展能力縮容決策Node ANode A自定義縮容決策Node BNodeANodeB更高的彈性效率更少的運維負擔觸發擴容速度提升-1s內并行擴容能力性能不隨集群規模明顯衰減更確定的彈性交付提升觸發與調度的確定性提升彈性交付的確定性99%泛化配置減少節點池管理兼容的彈性配置切換工作小差異
10、Cluster-AutoscalerGOATScaler擴容速度-10節點池60s45s擴容速度-100節點池 120-150s45s節點池實例規格單一靈活選擇庫存感知N/A有易用性中等簡單更強的可擴展機制可擴展的資源供給策略可擴展的調度策略可擴展的縮容選擇ACK即時彈性云原生彈性案例與解析03Prometheus采集用戶自定義指標自定義副本數算法 ACK Metrics Adapter轉化為HPA可用指標HPA根據指標伸縮WorkLoads/scale subresourcePodsPodPodAutoscaler節點池A節點池BPodNodePodNodePodDaemon-set Pod
11、Daemon-set PodNodeDaemon-set Podcustom metrics帶冗余量的指標值預期副本數擴容計劃:節點池A2節點擴容計劃:節點池B1節點custom metrics月活億級流量不好估計、流程徒增規模一個對戰房間對應一個pod模型Pod打散&Pod冗余擴容需求等待玩家離開再縮容&縮容前完成收集日志縮容需求減少流量毛刺帶來波動其他客戶案例 游戲AI場景帶冗余量的指標值客戶案例 游戲AI場景快準省快速準確成本優自定義鏡像加速節點添加多節點池并行擴容基于hostname的預調度策略優化Spot支持成本最優實例規格選擇無損數據僅縮容不會造成二次擴容的節點排水保證Daemonset負責hook邏輯實現,如數據收集擴容Daemonset pod驅逐后縮容節點縮容業務無損支持hook邏輯THANKS