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是非托管組件,安裝后將占用Worker節點資源。您可以在安裝組件時配置各模塊的資源申請量。
ack-koordinator默認會將資源畫像、精細化調度等功能的監控指標以Prometheus的格式對外透出。若您配置組件時開啟了ACK-Koordinator開啟Prometheus監控指標選項并使用了阿里云Prometheus服務,這些指標將被視為自定義指標并產生相應費用。具體費用取決于您的集群規模和應用數量等因素。建議您在啟用此功能前,仔細閱讀阿里云Prometheus計費說明,了解自定義指標的免費額度和收費策略。您可以通過賬單和用量查詢,監控和管理您的資源使用情況。
組件管理
ack-koordinator已在容器服務管理控制臺的組件管理頁面上架,您可以在組件管理頁面對ack-koordinator進行安裝、升級、卸載等操作。若您正在使用的版本是通過應用市場部署(即版本低于v0.7),請參見將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卡片中,單擊升級。
在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升級至最新版本。
登錄容器服務管理控制臺,在左側導航欄選擇集群。
在集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇 。
在組件管理頁面,定位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日 | 支持使用負載感知調度。 | 無 |