如果您的業務需要快速啟動而無需考慮節點資源問題,你可以考慮使用ack-autoscaling-placeholder組件。ack-autoscaling-placeholder為叢集的自動擴充提供緩衝區,當節點資源不足時,實際的工作負載會將提前預留的資源搶佔,實現快速啟動,然後結合使用節點自動調整功能,迫使叢集進行節點維度擴充。本文介紹如何使用ack-autoscaling-placeholder實現容器秒級伸縮。
操作流程
前提條件
步驟一:部署ack-autoscaling-placeholder組件並建立佔位工作負載
ack-autoscaling-placeholder能夠為叢集的自動擴充提供一個緩衝區,使得叢集的節點能夠超量配置,提前預熱。保證了工作負載能夠快速擴充,無需等待節點建立並加入叢集。
登入Container Service管理主控台,在左側導覽列選擇。
在應用目錄頁簽,搜尋ack-autoscaling-placeholder,然後單擊ack-autoscaling-placeholder。
在ack-autoscaling-placeholder頁面,單擊一鍵部署。
在建立面板,按照提示完成配置,然後單擊確定。
將參數配置頁簽中的參數內容替換為如下YAML樣本。
建立成功後,在頁面,可查看到該應用狀態為已部署。
步驟二:建立實際負載的PriorityClass
使用以下YAML樣本,建立名為
priorityClass.yaml的檔案。apiVersion: scheduling.k8s.io/v1 kind: PriorityClass metadata: name: high-priority value: 1000000 #配置優先順序,比上一步驟佔位Pod的預設優先順序要高。 globalDefault: false description: "This priority class should be used for XYZ service pods only."執行以下命令部署實際工作負載的PriorityClass。
kubectl apply -f priorityClass.yaml預期輸出如下:
priorityclass.scheduling.k8s.io/high-priority created
步驟三:建立實際工作負載
使用以下YAML樣本,建立名為
workload.yaml的檔案。執行以下命令部署實際的工作負載。
kubectl apply -f workload.yaml預期輸出如下:
deployment.apps/placeholder-test created
結果驗證
佔位工作負載ack-place-holder建立成功後,Pod狀態為Running。

實際工作負載部署時,由於配置了高優先順序的PriorityClass,會將佔位工作負載資源搶佔過來實現快速啟動,同時佔位工作負載的Pod被驅逐,且因節點資源不足處於Pending狀態。
實際工作負載placeholder-test快速部署在佔位工作負載所在的節點

佔位工作負載被驅逐,且處於Pending狀態

由於節點池開啟了自動彈性功能,節點資源不足觸發了節點擴容,佔位工作負載被調度到新彈出來的節點上,狀態為Running。

相關文檔
高可用情境下,實現多可用性區域部署的彈性擴容,請參見實現多可用性區域同時快速彈性擴容。