ack-koordinator是ACK支援差異化SLO(Service Level Objectives)能力的核心應用,在保證應用服務品質的同時,充分提升資源使用效率。本文介紹ack-koordinator組件的資訊、使用說明和變更記錄。
前提條件
Helm版本為3.0及以上。如需升級,請參見【組件升級】Helm V2 Tiller升級公告和如何手動升級Helm的版本?。
組件介紹
發展曆程
ack-koordinator與開源專案Koordinator緊密相關。Koordinator是一個基於QoS的Kubernetes混合工作負載調度系統,源自阿里巴巴在差異化SLO調度領域多年累積的經驗,旨在提高對延遲敏感的工作負載和批次工作的運行時效率和可靠性,簡化與資源相關的配置調整的複雜性,並增加Pod部署密度以提高資源使用率。
ack-koordinator組件的前身是ack-slo-manager,一方面ack-slo-manager為Koordinator開源社區的孵化提供了寶貴的經驗,另一方面隨著Koordinator逐漸成熟穩定,技術上對ack-slo-manager實現了反哺。因此,ack-koordinator提供兩類功能,一是Koordinator開源版本已經支援的功能,二是原ack-slo-manager提供的一系列差異化SLO能力。
組件架構
ack-koordinator由中心側組件和單機側組件兩大部分組成,各模組功能描述如下。
Koordinator Manager:以Deployment的形式部署的中心組件,由主備兩個執行個體組成,以保證組件的高可用。
SLO Controller:用於資源超賣管理,根據節點混部時的運行狀態,動態調整叢集的超賣資源量,同時為管理各節點的差異化SLO策略。
Recommender:提供資源畫像功能,預估工作負載的峰值資源需求,簡化您的配置容器資源規格的複雜度。
Koordinator Descheduler:以Deployment的形式部署的中心組件,提供重調度功能。
Koordlet:以DaemonSet的形式部署的單機組件,用於支援混部情境下的資源超賣、單機精細化調度,以及容器QoS保證等。
在ACK Serverless叢集中,ack-koordinator只包括Koordinator Manager組件,並提供資源畫像功能。
版本管理
ack-koordinator自v1.1.1-ack.1版本起,版本號碼格式變更為x.y.z-ackn
。
x.y.z
:對應Koordinator開源版本,表示ack-koordinator已支援對應開源版本的所有功能。ackn
:記錄ack-koordinator在此開源版本基礎上的功能增強和最佳化。
功能簡介
ack-koordinator組件的各模組涵蓋對應Koordinator開源版本支援的功能,安裝配置中,僅預設開啟常用功能的feature-gate。Koordinator開源版本的其他功能,需在開啟ack-koordinator對應模組的feature-gate後使用。關於Koordinator開源版本的其他功能,請參見Koordinator官網文檔。
類型 | 功能文檔 | 與Koordinator開源版本一致 |
CPU調度 | 否 | |
是 | ||
負載感知調度 | 是 | |
是 | ||
精細化調度 | 否 | |
是 | ||
是 | ||
是 | ||
是 | ||
是 | ||
否 | ||
否 | ||
否 |
此外,原resource-controller的所有功能已經由ack-koordinator完成適配,resource-controller已下線。若您正在使用resource-controller,請將resource-controller遷移至ack-koordinator。具體操作,請參見從resource-controller遷移至ack-koordinator。
費用說明
ack-koordinator組件本身的安裝和使用是免費的,不過需要注意的是,在以下情境中可能產生額外的費用:
組件管理
ack-koordinator已在Container Service管理主控台的組件管理頁面上架,您可以在組件管理頁面對ack-koordinator進行安裝、升級、卸載等操作。若您正在使用的版本是通過應用市場部署(即版本低於v0.7),請參見將ack-koordinator從應用市場遷移至組件中心完成遷移。
安裝ack-koordinator
登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面的目的地組群右側,單擊操作列下 。
在組件管理頁面,搜尋並單擊ack-koordinator,然後在ack-koordinator卡片中單擊安裝。
在安裝組件ack-koordinator對話方塊,按需修改配置參數,單擊確定。
在叢集管理頁左側導覽列,選擇ack-koordinator的部署狀態。 ,查看
如果ack-koordinator的狀態為已部署,表明組件已部署成功。
修改ack-koordinator參數配置
在組件管理頁面的ack-koordinator卡片中,單擊配置。
在ack-koordinator參數配置對話方塊,按需修改配置參數,然後單擊確定。
系統會按新配置自動重新部署ack-koordinator。
升級ack-koordinator
在組件管理頁面的ack-koordinator卡片中,單擊升級。
在ack-koordinator參數配置對話方塊,按需修改配置參數,然後單擊確定。
重要當已安裝的組件版本不是最新版本時,才會顯示升級操作。
通過其他方式對ack-koordinator已部署模組(Deployment、DaemonSet)所做的修改,在組件升級後將被覆蓋。
卸載ack-koordinator
CPU拓撲感知調度功能為每個ACK節點在kube-system命名空間下建立拓撲資訊ConfigMap。從0.5.1版本開始,ack-koordinator會自動清理已下線節點的ConfigMap,但卸載ack-koordinator後,未下線節點的ConfigMap仍會保留。這些未清理的ConfigMap不會影響您其他功能的正常使用,但會佔用資料空間,建議您及時清理。
在組件管理頁面,定位ack-koordinator,按照頁面提示完成組件的卸載。
刪除拓撲資訊ConfigMap。
在左側導覽列,選擇
,然後在頁面頂部,選擇kube-system命名空間。在名稱文字框中搜尋-numa-info,然後在下方列表,選擇符合
${NODENAME}-numa-info
命名格式的ConfigMap,單擊目標ConfigMap右側操作列下的刪除,按照頁面提示完成刪除。
組件遷移
將ack-koordinator從應用市場遷移至組件中心
若您修改過應用市場中ack-koordinator的ConfigMap,請先備份再升級;若未修改,請直接升級。
可選:使用以下任一方式對ack-koordinator的ConfigMap進行備份。
使用kubectl
根據原ConfigMap配置的命名空間(例如kube-system)和名稱(例如ack-slo-manager-config),執行以下命令,將原配置儲存在名稱為slo-config.yaml的檔案中。
kubectl get cm -n kube-system ack-slo-manager-config -o yaml > slo-config.yaml
執行
vim slo-config.yaml
命令編輯上述檔案,將ConfigMap的欄位修改為kube-system
,將name
欄位修改為ack-slo-config
,並刪除ConfigMap中所有annotations
和labels
,避免升級時被自動覆蓋。執行以下命令,將修改後的配置提交到叢集中。
kubectl apply -f slo-config.yaml
使用控制台
記錄原ConfigMap中的索引值對。
在左側導覽列中,單擊
,然後在頁面頂部,選擇在應用市場安裝ack-koordinator時指定的命名空間,預設為kube-system。在名稱文字框中搜尋ack-slo-manager-config,依次單擊目標ConfigMap名稱,記錄ConfigMap的索引值對。
使用原ConfigMap中的索引值對,建立新的ConfigMap。
在左側導覽列中,選擇
,然後在頁面頂部,選擇所有命名空間。在配置項頁面右上方,單擊建立,輸入配置項名稱為ack-slo-config,選擇新配置的命名空間kube-system,單擊+添加,輸入上一步記錄的索引值對,單擊建立。
升級ack-koordinator為最新版本。具體操作,請參見升級ack-koordinator。
重要若您修改過應用市場中ack-koordinator的ConfigMap,則需要在ack-koordinator參數配置對話方塊中,將步驟1備份的ConfigMap的名稱(例如ack-slo-config)填入到對應的配置項中。
從resource-controller遷移至ack-koordinator
ack-koordinator支援原resource-controller的所有功能。若您的叢集已安裝resource-controller,請參考以下步驟完成從resource-controller到ack-koordinator的遷移。
將resource-controller升級至最新版本。
登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇 。
在組件管理頁面,定位resource-controller,按照頁面提示完成組件的升級。
安裝並配置ack-koordinator。
在組件管理頁面,定位ack-koordinator,然後在組件卡片地區,按頁面提示進行安裝。
在安裝組件ack-koordinator對話方塊,按需修改agentFeatureGates(Koordlet的feature-gates控制開關)並配置其他參數,然後單擊確定。
檢查叢集目前是否使用了動態修改Pod的資源參數中的CPU Limit調節功能(即通過建立CRD或Pod Annotation的形式修改了指定容器Cgroup參數檔案cpu.cfs_quota_us)。若使用,請繼續執行步驟ii;若未使用,請直接執行步驟c。
參考如下命令,從當前ack-koordlet的對應的DaemonSet YAML中擷取當前feature-gate配置。
kubectl get daemonset -n kube-system ack-koordlet -o yaml |grep feature-gates - --feature-gates=AllAlpha=false,AllBeta=false,...,CPUBurst=true,....
參考如下樣本,修改當前ack-koordlet的feature-gate配置,關閉CPU Burst原則模組,即設定
CPUBurst=false
(參數之間使用英文半形逗號(,)分隔),其他保持不變。關閉後叢集內所有容器的CPU Burst機制將不會生效,以此避免兩個模組同時修改容器的Cgroup參數檔案cpu.cfs_quota_us。
AllAlpha=false,AllBeta=false,...,CPUBurst=false,....
對於容器的CPU資源彈效能力,強烈建議您使用CPU Burst效能最佳化策略功能,可以自動調整Pod的CPU資源彈性。更多資訊,請參見CPU Burst效能最佳化策略。
在頁面左側導覽列,選擇ack-koordinator的部署狀態。
,查看如果ack-koordinator的狀態為已部署,表明組件已部署成功。
在組件管理頁面,定位resource-controller,然後按照頁面提示完成組件的卸載。
常見問題
組件安裝時報錯:no matches for kind "ServiceMonitor" in version "monitoring.coreos.com/v1" ensure CRDs are installed first
叢集中未安裝Prometheus。請參見使用阿里雲Prometheus監控安裝Prometheus組件,或在安裝ack-koordinator時取消選中ack-koordinator開啟Prometheus監控指標。
組件安裝時報錯:task install-addons-xxx timeout, error install addons map[ack-slo-manager:Can't install release with errors: ... function "lookup" not defined
需升級Helm到3.0或以上版本。關於如何升級Helm,請參見【組件升級】Helm V2 Tiller升級公告。
變更記錄
2024年09月
版本號碼 | 鏡像地址 | 變更時間 | 變更內容 | 變更影響 |
v1.5.0-ack1.14 |
| 2024年09月12日 |
| 無 |
2024年07月
版本號碼 | 鏡像地址 | 變更時間 | 變更內容 | 變更影響 |
v1.5.0-ack1.12 |
| 2024年07月29日 | 最佳化內部介面。 | 無 |
2024年01月
版本號碼 | 鏡像地址 | 變更時間 | 變更內容 | 變更影響 |
v1.3.0-ack1.8 |
| 2024年01月24日 |
| 無 |
2023年12月
版本號碼 | 鏡像地址 | 變更時間 | 變更內容 | 變更影響 |
v1.3.0-ack1.7 |
| 2023年12月21日 |
| 無 |
2023年10月
版本號碼 | 鏡像地址 | 變更時間 | 變更內容 | 變更影響 |
v1.3.0-ack1.6 |
| 2023年10月19日 | 最佳化內部介面。 | 無 |
2023年06月
版本號碼 | 鏡像地址 | 變更時間 | 變更內容 | 變更影響 |
v1.2.0-ack1.3 |
| 2023年06月09日 | 最佳化內部介面。 | 無 |
2023年04月
版本號碼 | 鏡像地址 | 變更時間 | 變更內容 | 變更影響 |
v1.2.0-ack1.2 |
| 2023年04月25日 |
| 無 |
2023年03月
版本號碼 | 鏡像地址 | 變更時間 | 變更內容 | 變更影響 |
v1.1.1-ack.2 |
| 2023年03月23日 | 最佳化內部介面。 | 無 |
2023年01月
版本號碼 | 鏡像地址 | 變更時間 | 變更內容 | 變更影響 |
v1.1.1-ack.1 |
| 2023年01月11日 |
| 無 |
2022年11月
版本號碼 | 鏡像地址 | 變更時間 | 變更內容 | 變更影響 |
v0.8.0 |
| 2022年11月17日 |
| 組件升級後,若使用負載感知調度,需要將ACK升級至1.22.15-ack-2.0版本。其他功能均可正常使用。 |
2022年09月
版本號碼 | 鏡像地址 | 變更時間 | 變更內容 | 變更影響 |
v0.7.2 | registry.cn-hangzhou.aliyuncs.com/acs/ack-slo-manager:v0.7.2 | 2022年09月16日 | 修複0.7.1版本引入的問題:拓撲感知調度對Pod不生效。 | 無 |
v0.7.1 | registry.cn-hangzhou.aliyuncs.com/acs/ack-slo-manager:v0.7.1 | 2022年09月02日 |
| 無 |
2022年08月
版本號碼 | 鏡像地址 | 變更時間 | 變更內容 | 變更影響 |
v0.7.0 | registry.cn-hangzhou.aliyuncs.com/acs/ack-slo-manager:v0.7.0 | 2022年08月08日 | ack-slo-manager安裝方式從應用市場遷移至組件管理。 | 無 |
2022年07月
版本號碼 | 鏡像地址 | 變更時間 | 變更內容 | 變更影響 |
v0.6.0 | registry.cn-hangzhou.aliyuncs.com/acs/ack-slo-manager:v0.6.0 | 2022年07月26日 | 最佳化內部相關介面,簡化組件配置。 | 無 |
2022年06月
版本號碼 | 鏡像地址 | 變更時間 | 變更內容 | 變更影響 |
v0.5.2 | registry.cn-hangzhou.aliyuncs.com/acs/ack-slo-manager:v0.5.2 | 2022年06月14日 |
| 無 |
v0.5.1 | registry.cn-hangzhou.aliyuncs.com/acs/ack-slo-manager:v0.5.1 | 2022年06月02日 |
| 無 |
2022年04月
版本號碼 | 鏡像地址 | 變更時間 | 變更內容 | 變更影響 |
v0.5.0 | registry.cn-hangzhou.aliyuncs.com/acs/ack-slo-manager:v0.5.0 | 2022年04月29日 |
| 無 |
v0.4.1 | registry.cn-hangzhou.aliyuncs.com/acs/ack-slo-manager:v0.4.1 | 2022年04月14日 |
| 無 |
v0.4.0 | registry.cn-hangzhou.aliyuncs.com/acs/ack-slo-manager:v0.4.0 | 2022年04月11日 | 最佳化slo-agent記憶體開銷。 | 無 |
2022年02月
版本號碼 | 鏡像地址 | 變更時間 | 變更內容 | 變更影響 |
v0.3.0 | registry.cn-hangzhou.aliyuncs.com/acs/ack-slo-manager:v0.3.0 | 2022年02月25日 |
| 無 |
2021年12月
版本號碼 | 鏡像地址 | 變更時間 | 變更內容 | 變更影響 |
v0.2.0 | registry.cn-hangzhou.aliyuncs.com/acs/ack-slo-manager:v0.2.0 | 2021年12月10日 | 無 |
2021年09月
版本號碼 | 鏡像地址 | 變更時間 | 變更內容 | 變更影響 |
v0.1.1 | registry.cn-hangzhou.aliyuncs.com/acs/ack-slo-manager:v0.1.1-c2ccefa | 2021年09月02日 | 最佳化內部相關介面。 | 無 |
2021年07月
版本號碼 | 鏡像地址 | 變更時間 | 變更內容 | 變更影響 |
v0.1.0 | registry.cn-hangzhou.aliyuncs.com/acs/ack-slo-manager:v0.1.0-09766de | 2021年07月08日 | 支援使用負載感知調度。 | 無 |