全部產品
Search
文件中心

Container Service for Kubernetes:ack-koordinator(ack-slo-manager)

更新時間:Sep 15, 2024

ack-koordinator是ACK支援差異化SLO(Service Level Objectives)能力的核心應用,在保證應用服務品質的同時,充分提升資源使用效率。本文介紹ack-koordinator組件的資訊、使用說明和變更記錄。

前提條件

組件介紹

發展曆程

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調度

啟用CPU拓撲感知調度

CPU Burst效能最佳化策略

負載感知調度

負載感知調度

熱點打散重調度

精細化調度

資源畫像

啟用動態資源超賣

啟用CPU資源彈性限制式能力

啟用容器CPU QoS

啟用容器記憶體QoS

啟用容器L3 Cache及記憶體頻寬隔離

動態修改Pod的資源參數

啟用多NUMA機型的容器記憶體就近訪問加速

使用硬體DSA進行資料流加速

此外,原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已在Container Service管理主控台組件管理頁面上架,您可以在組件管理頁面對ack-koordinator進行安裝、升級、卸載等操作。若您正在使用的版本是通過應用市場部署(即版本低於v0.7),請參見將ack-koordinator從應用市場遷移至組件中心完成遷移。

安裝ack-koordinator

  1. 登入Container Service管理主控台,在左側導覽列選擇叢集

  2. 叢集列表頁面的目的地組群右側,單擊操作列下更多 > 組件管理

  3. 組件管理頁面,搜尋並單擊ack-koordinator,然後在ack-koordinator卡片中單擊安裝

  4. 安裝組件ack-koordinator對話方塊,按需修改配置參數,單擊確定

  5. 在叢集管理頁左側導覽列,選擇應用 > Helm,查看ack-koordinator的部署狀態。

    如果ack-koordinator狀態已部署,表明組件已部署成功。

修改ack-koordinator參數配置

  1. 組件管理頁面的ack-koordinator卡片中,單擊配置

  2. ack-koordinator參數配置對話方塊,按需修改配置參數,然後單擊確定

    系統會按新配置自動重新部署ack-koordinator

升級ack-koordinator

  1. 組件管理頁面的ack-koordinator卡片中,單擊升級

  2. ack-koordinator參數配置對話方塊,按需修改配置參數,然後單擊確定

    重要
    • 當已安裝的組件版本不是最新版本時,才會顯示升級操作。

    • 通過其他方式對ack-koordinator已部署模組(Deployment、DaemonSet)所做的修改,在組件升級後將被覆蓋。

卸載ack-koordinator

CPU拓撲感知調度功能為每個ACK節點在kube-system命名空間下建立拓撲資訊ConfigMap。從0.5.1版本開始,ack-koordinator會自動清理已下線節點的ConfigMap,但卸載ack-koordinator後,未下線節點的ConfigMap仍會保留。這些未清理的ConfigMap不會影響您其他功能的正常使用,但會佔用資料空間,建議您及時清理。

  1. 組件管理頁面,定位ack-koordinator,按照頁面提示完成組件的卸載。

  2. 刪除拓撲資訊ConfigMap。

    1. 在左側導覽列,選擇組態管理 > 配置項,然後在頁面頂部,選擇kube-system命名空間。

    2. 在名稱文字框中搜尋-numa-info,然後在下方列表,選擇符合${NODENAME}-numa-info命名格式的ConfigMap,單擊目標ConfigMap右側操作列下的刪除,按照頁面提示完成刪除。

組件遷移

ack-koordinator從應用市場遷移至組件中心

若您修改過應用市場ack-koordinator的ConfigMap,請先備份再升級;若未修改,請直接升級。

  1. 可選:使用以下任一方式對ack-koordinator的ConfigMap進行備份。

    使用kubectl

    1. 根據原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
    2. 執行vim slo-config.yaml命令編輯上述檔案,將ConfigMap的欄位修改為kube-system,將name欄位修改為ack-slo-config,並刪除ConfigMap中所有annotationslabels,避免升級時被自動覆蓋。

    3. 執行以下命令,將修改後的配置提交到叢集中。

      kubectl apply -f slo-config.yaml 

    使用控制台

    1. 記錄原ConfigMap中的索引值對。

      1. 在左側導覽列中,單擊組態管理 > 配置項,然後在頁面頂部,選擇在應用市場安裝ack-koordinator時指定的命名空間,預設為kube-system

      2. 在名稱文字框中搜尋ack-slo-manager-config,依次單擊目標ConfigMap名稱,記錄ConfigMap的索引值對。

    2. 使用原ConfigMap中的索引值對,建立新的ConfigMap。

      1. 在左側導覽列中,選擇組態管理 > 配置項,然後在頁面頂部,選擇所有命名空間

      2. 配置項頁面右上方,單擊建立,輸入配置項名稱ack-slo-config,選擇新配置的命名空間kube-system,單擊+添加,輸入上一步記錄的索引值對,單擊建立

  2. 升級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的遷移。

  1. 將resource-controller升級至最新版本。

    1. 登入Container Service管理主控台,在左側導覽列選擇叢集

    2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇營運管理 > 組件管理

    3. 組件管理頁面,定位resource-controller,按照頁面提示完成組件的升級。

  2. 安裝並配置ack-koordinator

    1. 組件管理頁面,定位ack-koordinator,然後在組件卡片地區,按頁面提示進行安裝。

    2. 安裝組件ack-koordinator對話方塊,按需修改agentFeatureGates(Koordlet的feature-gates控制開關)並配置其他參數,然後單擊確定

      1. 檢查叢集目前是否使用了動態修改Pod的資源參數中的CPU Limit調節功能(即通過建立CRD或Pod Annotation的形式修改了指定容器Cgroup參數檔案cpu.cfs_quota_us)。若使用,請繼續執行步驟ii;若未使用,請直接執行步驟c

      2. 參考如下命令,從當前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,....
      3. 參考如下樣本,修改當前ack-koordlet的feature-gate配置,關閉CPU Burst原則模組,即設定CPUBurst=false(參數之間使用英文半形逗號(,)分隔),其他保持不變。

        關閉後叢集內所有容器的CPU Burst機制將不會生效,以此避免兩個模組同時修改容器的Cgroup參數檔案cpu.cfs_quota_us

        AllAlpha=false,AllBeta=false,...,CPUBurst=false,....
      4. 對於容器的CPU資源彈效能力,強烈建議您使用CPU Burst效能最佳化策略功能,可以自動調整Pod的CPU資源彈性。更多資訊,請參見CPU Burst效能最佳化策略

    3. 在頁面左側導覽列,選擇應用 > Helm,查看ack-koordinator的部署狀態。

      如果ack-koordinator狀態已部署,表明組件已部署成功。

  3. 組件管理頁面,定位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

  • registry.cn-hangzhou.aliyuncs.com/acs/koord-manager:v1.5.0-ack1.14-4225002-aliyun

  • registry.cn-hangzhou.aliyuncs.com/acs/koordlet:v1.5.0-ack1.14-4225002-aliyun

  • registry.cn-hangzhou.aliyuncs.com/acs/koord-descheduler:v1.5.0-ack1.14-4225002-aliyun

2024年09月12日

  • 最佳化重調度maxUnavailablePerWorkload參數的計算邏輯。

  • 修複通過cgroups動態調整Pod資源參數的功能。

  • 資源畫像相關指標更名。

  • 最佳化內部相關介面。

2024年07月

版本號碼

鏡像地址

變更時間

變更內容

變更影響

v1.5.0-ack1.12

  • registry.cn-hangzhou.aliyuncs.com/acs/koord-manager:v1.5.0-ack1.12-a096ae3-aliyun

  • registry.cn-hangzhou.aliyuncs.com/acs/koordlet:v1.5.0-ack1.12-a096ae3-aliyun

  • registry.cn-hangzhou.aliyuncs.com/acs/koord-descheduler:v1.5.0-ack1.12-a096ae3-aliyun

2024年07月29日

最佳化內部介面。

2024年01月

版本號碼

鏡像地址

變更時間

變更內容

變更影響

v1.3.0-ack1.8

  • registry.cn-hangzhou.aliyuncs.com/acs/koord-manager:v1.3.0-ack1.8-94730e0-aliyun

  • registry.cn-hangzhou.aliyuncs.com/acs/koordlet:v1.3.0-ack1.8-94730e0-aliyun

  • registry.cn-hangzhou.aliyuncs.com/acs/koord-descheduler:v1.3.0-ack1.8-94730e0-aliyun

2024年01月24日

  • 支援在ACK靈駿叢集安裝。

  • 功能與v1.3.0-ack1.6版本一致。

2023年12月

版本號碼

鏡像地址

變更時間

變更內容

變更影響

v1.3.0-ack1.7

  • registry.cn-hangzhou.aliyuncs.com/acs/koord-manager:v1.3.0-ack1.7-3500ce9-aliyun

  • registry.cn-hangzhou.aliyuncs.com/acs/koordlet:v1.3.0-ack1.7-3500ce9-aliyun

  • registry.cn-hangzhou.aliyuncs.com/acs/koord-descheduler:v1.3.0-ack1.7-3500ce9-aliyun

2023年12月21日

  • 支援在ACK Edge叢集安裝。

  • 僅在雲端Worker節點安裝,不在邊緣節點安裝。

  • 功能與v1.3.0-ack1.6版本一致。

2023年10月

版本號碼

鏡像地址

變更時間

變更內容

變更影響

v1.3.0-ack1.6

  • registry.cn-hangzhou.aliyuncs.com/acs/koord-manager:v1.3.0-ack1.6-3500ce9-aliyun

  • registry.cn-hangzhou.aliyuncs.com/acs/koordlet:v1.3.0-ack1.6-3500ce9-aliyun

  • registry.cn-hangzhou.aliyuncs.com/acs/koord-descheduler:v1.3.0-ack1.6-3500ce9-aliyun

2023年10月19日

最佳化內部介面。

2023年06月

版本號碼

鏡像地址

變更時間

變更內容

變更影響

v1.2.0-ack1.3

  • registry-cn-zhangjiakou.ack.aliyuncs.com/acs/koord-manager:v1.2.0-ack1.3-89a9730-aliyun

  • registry-cn-zhangjiakou.ack.aliyuncs.com/acs/koordlet:v1.2.0-ack1.3-89a9730-aliyun

  • registry-cn-zhangjiakou.ack.aliyuncs.com/acs/koord-descheduler:v1.2.0-ack1.3-89a9730-aliyun

2023年06月09日

最佳化內部介面。

2023年04月

版本號碼

鏡像地址

變更時間

變更內容

變更影響

v1.2.0-ack1.2

  • registry.cn-hangzhou.aliyuncs.com/acs/koord-manager:v1.2.0-ack1.2-b675c9a8-aliyun

  • registry.cn-hangzhou.aliyuncs.com/acs/koordlet:v1.2.0-ack1.2-b675c9a8-aliyun

  • registry.cn-hangzhou.aliyuncs.com/acs/koord-descheduler:v1.2.0-ack1.2-b675c9a8-aliyun

2023年04月25日

2023年03月

版本號碼

鏡像地址

變更時間

變更內容

變更影響

v1.1.1-ack.2

  • registry.cn-hangzhou.aliyuncs.com/acs/koord-manager:v1.1.1-ack.2

  • registry.cn-hangzhou.aliyuncs.com/acs/koordlet:v1.1.1-ack.2

  • registry.cn-hangzhou.aliyuncs.com/acs/koord-descheduler:v1.1.1-ack.2

2023年03月23日

最佳化內部介面。

2023年01月

版本號碼

鏡像地址

變更時間

變更內容

變更影響

v1.1.1-ack.1

  • registry.cn-hangzhou.aliyuncs.com/acs/koord-manager:v1.1.1-ack.1

  • registry.cn-hangzhou.aliyuncs.com/acs/koordlet:v1.1.1-ack.1

2023年01月11日

  • 組件名稱修改為ack-koordinator。

  • 最佳化內部介面。

2022年11月

版本號碼

鏡像地址

變更時間

變更內容

變更影響

v0.8.0

  • registry.cn-hangzhou.aliyuncs.com/acs/koord-manager:v0.8.0

  • registry.cn-hangzhou.aliyuncs.com/acs/koordlet:v0.8.0

2022年11月17日

  • 負載感知調度升級,支援Kubernetes 1.22版本。

  • 最佳化內部相關介面。

組件升級後,若使用負載感知調度,需要將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日

  • 解決在CentOS 3核心環境下,使用拓撲感知調度時出現的CPU限流問題。

  • 支援Prometheus監控開關。

  • 支援資源畫像控制台相關功能。

  • 取消應用市場的安裝方式。

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日

  • 最佳化內部相關介面。

  • 最佳化啟用容器CPU QoS

  • 支援關閉ack-slo-manager命名空間的自動建立。

v0.5.1

registry.cn-hangzhou.aliyuncs.com/acs/ack-slo-manager:v0.5.1

2022年06月02日

  • 支援啟用容器CPU QoS

  • 最佳化內部相關介面,自動清理已下線節點對應的拓撲資訊ConfigMap。

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日

支援使用負載感知調度