ack-koordinator は、サービス品質 (QoS) を保証するスケジューリングシステムです。CPU Burst や動的なリソースオーバーコミットメントなどの機能を利用して、優先度の高いアプリケーションのサービス品質を確保しながらクラスターのリソース使用率を最適化し、システム全体の安定性を向上させます。ack-koordinator は、リソースプロファイリングとデスケジューリングもサポートしています。このトピックでは、ack-koordinator コンポーネントとそのリリースノートについて説明します。
コンポーネントのリリースと変更履歴については、「リリースノート」をご参照ください。
ack-koordinator
ack-koordinator は、Kubernetes ベースの QoS 保証スケジューリングシステムであり、クラスターのリソース使用率を向上させ、優先度の異なるアプリケーションに QoS 保証を提供します。これにより、リソース競合によるアプリケーションのパフォーマンスへの影響を防ぎます。たとえば、ack-koordinator は、サービス指向アプリケーションとバッチ処理タスクを同じノードにコロケーションすることをサポートします。動的なリソースオーバーコミットメントや QoS 保証スケジューリングなどの機能を使用して、サービスアプリケーションの QoS を確保しながらリソース使用率を向上させます。これにより、バッチ処理、ハイパフォーマンスコンピューティング (HPC)、AI タスク、機械学習のシナリオに適しています。ack-koordinator は、ACK で QoS 保証スケジューリングを可能にするコアコンポーネントです。弾力的なリソース制限、トポロジー認識スケジューリング、動的なリソースオーバーコミットメント、負荷感知スケジューリング、デスケジューリング、リソースプロファイリングなどの機能を提供します。
開始するには、ACK コンソールにログインし、ご利用の ACK クラスターに ack-koordinator コンポーネントをインストールします。その後、ConfigMap または Pod アノテーションを使用してその機能を有効化し、利用できます。
アーキテクチャ
ack-koordinator は、中央コンポーネントとノードレベルのコンポーネントで構成されます。
Koordinator Manager:Deployment としてデプロイされる中央コンポーネントです。プライマリインスタンスとスタンバイインスタンスで構成され、高可用性を確保します。
SLO Controller:リソースのオーバーコミットメントを管理します。コロケーション中にノードの実行ステータスに基づいてクラスター内のオーバーコミットされたリソースを動的に調整し、各ノードの差別化された SLO ポリシーを管理します。
Recommender:リソースプロファイリング機能を提供します。ワークロードのピーク時のリソース要件を推定し、コンテナのリソース仕様の設定を簡素化します。
Koordinator Descheduler:Deployment としてデプロイされる中央コンポーネントで、デスケジューリング機能を提供します。
Koordlet:DaemonSet としてデプロイされるノードレベルのコンポーネントです。動的なリソースオーバーコミットメント、負荷感知スケジューリング、およびコロケーションシナリオでの QoS 保証スケジューリングをサポートします。
Koordinator スケジューリングプラグイン:ack-koordinator コンポーネントをインストールする際、Koord-Scheduler モジュールは含まれません。代わりに、そのスケジューリング機能は ACK スケジューラにプラグインとして統合され、デフォルトでインストールされます。
ACK Serverless クラスターでは、ack-koordinator には Koordinator Manager コンポーネントのみが含まれ、リソースプロファイリング機能を提供します。
バージョニング
v1.1.1-ack.1 以降、ack-koordinator のバージョン番号は x.y.z-ackn 形式を使用します。
x.y.z:オープンソースの Koordinator バージョンに対応しており、ack-koordinator がそのバージョンのすべての機能をサポートしていることを意味します。ackn:オープンソースバージョンに基づいた機能強化と最適化を表します。
主要な概念
サポートされる機能
ack-koordinator コンポーネントには、対応するオープンソースの Koordinator バージョンの機能が含まれています。インストール時には、一般的な機能の feature-gate のみがデフォルトで有効になっています。他の機能を使用するには、ack-koordinator モジュールに対応する feature-gate を手動で有効にする必要があります。詳細については、Koordinator 公式ドキュメントをご参照ください。
タイプ | 機能 | 説明 | オープンソースとの一貫性 |
リアルタイムの負荷が低いノードに Pod をスケジューリングして、クラスターの負荷を分散し、ノード障害のリスクを軽減します。 | はい | ||
負荷スパイク時に一時的な追加 CPU リソースを提供することで、アプリケーションの QoS を向上させます。これは、CPU スロットリングを自動的に検出し、コンテナパラメーターを適応的に調整することで実現されます。 | はい | ||
Pod をノードの特定の CPU コアで実行するように固定します。これにより、CPU コンテキストスイッチや NUMA 間メモリアクセスによるアプリケーションのパフォーマンス低下を軽減します。 | いいえ | ||
リアルタイムのノード負荷データを収集して、割り当てられているが未使用の CPU およびメモリリソースを定量化し、公平性を確保しながらこれらのアイドルリソースを BestEffort ワークロードに提供します。 | はい | ||
動的なリソースオーバーコミットメントのシナリオで、この機能は BE Pod の CPU 使用率を制限して、ノード上の LS Pod のパフォーマンスを保護します。 | はい | ||
優先度の低いアプリケーションとのリソース競合を防ぐことで、優先度の高い (LS) アプリケーションの CPU リソースを保証します。 | はい | ||
優先度に基づいてコンテナの QoS パラメーターを設定できます。メモリリソースの公平性を確保しながら、優先度の高いアプリケーションのパフォーマンスを優先します。 | はい | ||
異なる優先度のアプリケーション間で L3 キャッシュとメモリ帯域幅の使用量を分離し、LS アプリケーションのパフォーマンスを保護します。 | はい | ||
cgroup ファイルを変更することで、再起動なしで Pod または Deployment のノードレベルの分離パラメーター (CPU、メモリ、ディスク I/O) を動的に変更できます。 | いいえ | ||
Intel® データストリーミングアクセラレーター (DSA) を活用して、ノード上のデータ集約型ワークロードのデータ処理効率を向上させます。また、コンテナの近接メモリアクセスのアクセラレーションをさらに強化します。 | いいえ | ||
CPU に固定されたアプリケーションに対して、リモート NUMA ノードからローカル NUMA ノードへメモリを安全に移行することで、メモリ集約型ワークロードのメモリアクセスパフォーマンスを向上させます。このプロセスにより、ローカルメモリアクセスのヒット率が向上します。 | いいえ | ||
最適でない場所に配置された Pod をより健全なノードに再スケジューリングして、クラスターの健全性を維持し、リソース使用量を最適化し、ワークロードの QoS を向上させます。このプロセスは通常、不均一なリソース使用率や高いノード負荷によってトリガーされます。 | はい | ||
指定された負荷ウォーターマークを超えるノードから Pod を自動的にデスケジューリングして、深刻な負荷不均衡を防ぎます。 | はい | ||
GPU トポロジー認識 | Pod を最適な NUMA ノードにスケジューリングすることでパフォーマンスを最適化し、NUMA ノード間のアクセスを削減します。 | いいえ | |
過去のリソース使用量データを分析してコンテナのリソース仕様を推奨し、コンテナの | いいえ | ||
インストールと管理
ack-koordinator は、ACK console の アドオン管理 ページで利用できます。コンポーネントは、アドオン管理 ページでインストール、スペックアップ、およびアンインストールできます。
前提条件
Kubernetes 1.18 以降を実行する ACK クラスターが必要です。クラスターのアップグレード方法の詳細については、「クラスターの手動アップグレード」をご参照ください。
Helm v3.0 以降がインストールされている必要があります。Helm をアップグレードするには、「[コンポーネントのアップグレード] Helm V2 Tiller のアップグレードに関するお知らせ」および「Helm のバージョンを手動でアップグレードするにはどうすればよいですか?」をご参照ください。
コンポーネントのインストールと管理
ack-koordinator コンポーネントは アドオン管理 ページでインストールできます。このページに戻って、必要に応じてコンポーネントのパラメーターを変更したり、アップグレードしたりすることもできます。
Marketplace からデプロイされた v0.7 より前のバージョンのコンポーネントについては、「Marketplace からアドオンへの ack-koordinator の移行」を参照して移行を完了してください。
コンポーネントのインストール:以下の手順に従ってコンポーネントをインストールし、デプロイメントを検証します。
コンポーネントパラメーターの変更:システムは新しい構成に基づいて ack-koordinator を自動的に再デプロイします。
コンポーネントのアップグレード:ack-koordinator のデプロイ済みモジュール (Deployment や DaemonSet など) を手動で変更した場合、アップグレードによってカスタム構成が上書きされます。
-
ACK コンソールにログインします。左側のナビゲーションウィンドウで、クラスターリスト をクリックします。
-
クラスターリスト ページで、対象クラスターの名前をクリックします。左側のナビゲーションウィンドウで、 [コンポーネントとアドオン] をクリックします。
アドオン管理 ページで、[インストール] タブをクリックし、[ack-koordinator(ack-slo-manager)] コンポーネントを見つけて選択し、[次へ] をクリックします。
画面の指示に従ってコンポーネントの構成を完了し、[次へ] をクリックします。
構成情報を確認し、[OK] をクリックします。
コンポーネントのアンインストール
既存ノードの ConfigMap のクリーンアップ
トポロジー認識 CPU スケジューリング機能は、各 ACK ノードの kube-system 名前空間にトポロジー ConfigMap を作成します。v0.5.1 以降、ack-koordinator は削除されたノードの ConfigMap を自動的にクリーンアップします。ただし、ack-koordinator をアンインストールすると、既存ノードの ConfigMap は保持されます。これらの残された ConfigMap は他の機能には影響しませんが、ストレージ容量を消費します。クリーンアップすることを推奨します。
アドオン管理 ページで ack-koordinator を見つけ、画面の指示に従ってコンポーネントをアンインストールします。
トポロジー ConfigMap を削除します。
左側のナビゲーションウィンドウで、 を選択します。ページの上部で、[kube-system] 名前空間を選択します。
検索ボックスに「-numa-info」と入力します。リストから
${NODENAME}-numa-info形式に一致する ConfigMap を見つけます。ConfigMap の Actions 列で、削除 をクリックし、画面の指示に従います。
CRD オブジェクトのクリーンアップ
ack-koordinator コンポーネントをアンインストールすると、一部の CRD オブジェクトが残る場合があります。これらの残されたオブジェクトは他の機能には影響しませんが、ストレージ容量を消費します。ack-koordinator を再インストールする予定がある場合、これらのオブジェクトがコンポーネントの機能に干渉する可能性があります。クリーンアップすることを推奨します。影響を受ける CRD は以下のとおりです。
autoscaling.alibabacloud.com | slo.koordinator.sh |
| slo.koordinator.sh API グループを展開すると、バージョン v1alpha1 に 2 つの CRD リソースタイプが含まれています:NodeSLO と NodeMetric。 |
課金
ack-koordinator コンポーネントのインストールまたは使用は無料です。ただし、以下のシナリオでは費用が発生する場合があります:
ack-koordinator は非マネージドコンポーネントであり、インストール後にワーカーノードのリソースを消費します。インストール時に各モジュールのリソースリクエストを構成できます。
デフォルトでは、ack-koordinator はリソースプロファイリングや詳細なスケジューリングなどの機能の監視メトリクスを Prometheus 形式で公開します。[ack-koordinator の Prometheus モニタリングメトリクスを有効にする] オプションを選択し、Managed Service for Prometheus を使用する場合、これらのメトリクスはカスタムメトリクスとして課金されます。料金は、クラスターのサイズやアプリケーションの数などの要因によって異なります。この機能を有効にする前に、「Prometheus インスタンスの課金」を読んで、カスタムメトリクスの無料利用枠と価格設定を理解することを推奨します。リソース使用量を監視および管理するには、「使用量クエリ」を使用してください。
関連情報
ack-koordinator と ack-slo-manager の関係
ack-slo-manager は ack-koordinator の前身であり、オープンソースプロジェクト Koordinator をインキュベートしました。Koordinator が成熟するにつれて、その技術は ack-slo-manager に取り込まれました。ack-koordinator は、オープンソースの Koordinator バージョンの機能を提供し、前身よりも多くの機能を提供します。新しい機能やバグ修正にアクセスするには、「Marketplace からアドオンへの ack-koordinator の移行」の指示に従って、コンポーネントを最新バージョンにアップグレードしてください。
Marketplace からアドオンへの ack-koordinator の移行
Marketplace から ack-koordinator (v0.7 より前のバージョン) をデプロイした場合は、アンインストールしてから再インストールする必要があります。以下の指示に従って移行を完了してください。
Marketplace の ack-koordinator の ConfigMap を変更した場合は、アップグレードする前にバックアップしてください。ConfigMap を変更していない場合は、ステップ 2 に進み、コンポーネントを直接アップグレードしてください。
kubectl またはコンソールを使用して、ack-koordinator の ConfigMap をバックアップします。
kubectl
次のコマンドを実行して、元の構成を slo-config.yaml ファイルに保存します。名前空間 (例:kube-system) と名前 (例:ack-slo-manager-config) を、ご利用の ConfigMap の実際の値に置き換えてください。
kubectl get cm -n kube-system ack-slo-manager-config -o yaml > slo-config.yamlvim slo-config.yamlコマンドを実行してファイルを編集します。ConfigMap の名前空間をkube-systemに変更し、nameフィールドをack-slo-configに変更し、アップグレード中に上書きされないように、ConfigMap からすべてのannotationsとlabelsを削除します。次のコマンドを実行して、変更した構成をクラスターに適用します。
kubectl apply -f slo-config.yaml
コンソール
元の ConfigMap のキーと値のペアを記録します。
左側のナビゲーションウィンドウで、を選択します。 ページの上部で、Marketplaceから ack-koordinator をインストールしたときに指定した名前空間を選択します。 デフォルトの名前空間は kube-system です。
[名前] 検索ボックスに ack-slo-manager-config と入力し、ターゲットの ConfigMap の名前をクリックして、ConfigMap のキーと値のペアを記録します。
元の ConfigMap のキーと値のペアを使用して、新しい ConfigMap を作成します。
左側のナビゲーションウィンドウで、 を選択します。ページの上部で、すべての名前空間 を選択します。
ConfigMap ページの右上隅で、作成する をクリックします。設定マップ名 を ack-slo-config に設定し、kube-system 名前空間を選択します。[+] 追加 をクリックし、記録したキーと値のペアを入力して、作成する をクリックします。
左側のナビゲーションウィンドウで、 を選択します。Marketplace からインストールされた ack-slo-manager コンポーネントを見つけ、[操作] 列の [削除] をクリックしてアンインストールします。
アドオン管理 ページで、最新バージョンの ack-koordinator をインストールします。詳細については、「コンポーネントのインストールと管理」をご参照ください。
重要Marketplace の ack-koordinator コンポーネントの ConfigMap を変更した場合は、ステップ 1 で作成したバックアップ ConfigMap の名前 (例:ack-slo-config) を [ack-koordinator パラメーター] ダイアログボックスの対応するパラメーターフィールドに入力する必要があります。
resource-controller から ack-koordinator への移行
resource-controller コンポーネントは非推奨になりました。ack-koordinator は、トポロジー認識 CPU スケジューリングやPod のリソースパラメーターの動的変更など、resource-controller のすべての機能をサポートするようになりました。クラスターで resource-controller を使用している場合は、次の手順に従って resource-controller から ack-koordinator に移行してください。
resource-controller を最新バージョンにアップグレードします。
-
ACK コンソールにログインします。左側のナビゲーションウィンドウで、クラスターリスト をクリックします。
-
クラスターリスト ページで、対象クラスターの名前をクリックします。左側のナビゲーションウィンドウで、 [コンポーネントとアドオン] をクリックします。
アドオン管理 ページで resource-controller を見つけ、画面の指示に従ってコンポーネントをアップグレードします。
-
ack-koordinator をインストールして構成します。
アドオン管理 ページで ack-koordinator を見つけ、画面の指示に従ってインストールします。
インストールが完了したら、アドオン管理 ページに移動し、ack-koordinator アドオンの [操作] 列にある [設定] をクリックします。Koordlet の feature-gate スイッチである agentFeatures パラメーターやその他のパラメーターを必要に応じて構成します。その後、OK をクリックします。
クラスターが「Pod のリソースパラメーターの動的変更」で説明されている CPU Limit 調整機能を使用しているかどうかを確認します。この機能は、CRD を作成するか、Pod アノテーションを追加することで、特定のコンテナの cpu.cfs_quota_us cgroups ファイルを変更します。この機能を使用している場合は、ステップ 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 構成を変更して、
CPUBurst=falseを設定することで、CPU Burst パフォーマンス最適化ポリシーを無効にします。パラメーターはカンマ (,) で区切ります。他の設定は変更しないでください。このポリシーを無効にすると、クラスター内のすべてのコンテナの CPU Burst メカニズムも無効になります。これにより、2 つのモジュールが同時に cpu.cfs_quota_us cgroups ファイルを変更するのを防ぎます。
AllAlpha=false,AllBeta=false,...,CPUBurst=false,....コンテナの弾力的な CPU リソースを有効にするには、CPU Burst パフォーマンス最適化ポリシーを使用して Pod の CPU 弾力性を自動的に調整します。詳細については、「CPU Burst パフォーマンス最適化ポリシーを有効にする」をご参照ください。
左側のナビゲーションウィンドウで、 を選択して、ack-koordinator のデプロイメントステータスを表示します。
アドオン管理 ページで resource-controller を見つけ、画面の指示に従ってアンインストールします。
よくある質問
コンポーネントのインストールエラー:no matches for kind "ServiceMonitor" in version "monitoring.coreos.com/v1" ensure CRDs are installed first
クラスターに Managed Service for Prometheus がインストールされていません。「Managed Service for 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 を v3.0 以降にアップグレードしてください。詳細については、「コンポーネントのアップグレード:Helm V2 Tiller のアップグレードに関するお知らせ」をご参照ください。
リリースノート
2026年7月
バージョン | イメージアドレス | 日付 | 変更点 | 影響 |
v1.8.0-ack1.25 |
| 2026年7月29日 |
| なし |
2026年1月
バージョン | イメージアドレス | 日付 | 変更点 | 影響 |
v1.6.1-ack1.23 |
| 2026年1月30日 |
| なし |
2025年11月
バージョン | イメージアドレス | リリース日 | 説明 | 影響 |
v1.6.1-ack1.21 |
| 2025年11月6日 |
| なし |
2025年8月
バージョン | イメージアドレス | リリース日 | 説明 | 影響 |
v1.6.1-ack1.19 |
| 2025年8月8日 |
| なし |
2025年7月
バージョン | イメージアドレス | リリース日 | 説明 | 影響 |
v1.6.1-ack1.18 |
| 2025年7月30日 |
| なし |
v1.6.1-ack1.17 |
| 2025年7月14日 |
| なし |
v1.6.1-ack1.16 |
| 2025年7月4日 |
| なし |
2024年9月
バージョン | イメージアドレス | リリース日 | 説明 | 影響 |
v1.5.0-ack1.14 |
| 2024年9月12日 |
| なし |
2024年7月
バージョン | イメージアドレス | リリース日 | 説明 | 影響 |
v1.5.0-ack1.12 |
| 2024年7月29日 | 内部インターフェイスを最適化しました | なし |
2024年1月
バージョン | イメージアドレス | リリース日 | 説明 | 影響 |
v1.3.0-ack1.8 |
| 2024年1月24日 |
| なし |
2023年12月
バージョン | イメージアドレス | リリース日 | 説明 | 影響 |
v1.3.0-ack1.7 |
| 2023年12月21日 |
| なし |
2023年10月
バージョン | 画像 | リリース日 | 説明 | 影響 |
v1.3.0-ack1.6 |
| 2023年10月19日 | 内部インターフェイスを最適化しました。 | なし |
2023年6月
バージョン | イメージアドレス | リリース日 | 説明 | 影響 |
v1.2.0-ack1.3 |
| 2023年6月9日 | 内部インターフェイスを最適化しました。 | なし |
2023年4月
バージョン | イメージアドレス | リリース日 | 説明 | 影響 |
v1.2.0-ack1.2 |
| 2023年4月25日 |
| なし |
2023年3月
バージョン | イメージアドレス | リリース日 | 説明 | 影響 |
v1.1.1-ack.2 |
| 2023年3月23日 | 内部インターフェイスを最適化しました。 | なし |
2023年1月
バージョン | イメージ | リリース日 | 説明 | 影響 |
v1.1.1-ack.1 |
| 2023年1月11日 |
| なし |
2022年11月
バージョン | イメージアドレス | リリース日 | 説明 | 影響 |
v0.8.0 |
| 2022年11月17日 |
| コンポーネントをアップグレードした後、負荷感知 Pod スケジューリングを使用するには、ACK クラスターをバージョン 1.22.15-ack-2.0 にアップグレードする必要があります。このアップグレードは他の機能には影響しません。 |
2022年9月
バージョン | イメージアドレス | リリース日 | 説明 | 影響 |
v0.7.2 | registry.{REGION}.aliyuncs.com/acs/ack-slo-manager:v0.7.2 | 2022年9月16日 | v0.7.1 で導入された、トポロジー認識スケジューリングが Pod に適用されない問題を修正しました。 | なし |
v0.7.1 | registry.{REGION}.aliyuncs.com/acs/ack-slo-manager:v0.7.1 | 2022年9月2日 |
| なし |
2022年8月
バージョン | イメージ | リリース日 | 説明 | 影響 |
v0.7.0 | registry.{REGION}.aliyuncs.com/acs/ack-slo-manager:v0.7.0 | 2022年8月8日 | ack-slo-manager のインストールが Marketplace からアドオンに移動しました。 | なし |
2022年7月
バージョン | イメージアドレス | リリース日 | 説明 | 影響 |
v0.6.0 | registry.{REGION}.aliyuncs.com/acs/ack-slo-manager:v0.6.0 | 2022年7月26日 | 内部 API を最適化し、コンポーネント構成を簡素化しました。 | なし |
2022年6月
バージョン | イメージ | 日付 | 説明 | 影響 |
v0.5.2 | registry.{REGION}.aliyuncs.com/acs/ack-slo-manager:v0.5.2 | 2022年6月14日 |
| なし |
v0.5.1 | registry.{REGION}.aliyuncs.com/acs/ack-slo-manager:v0.5.1 | 2022年6月2日 |
| なし |
2022年4月
バージョン | イメージアドレス | リリース日 | 説明 | 影響 |
v0.5.0 | registry.{REGION}.aliyuncs.com/acs/ack-slo-manager:v0.5.0 | 2022年4月29日 |
| なし |
v0.4.1 | registry.{REGION}.aliyuncs.com/acs/ack-slo-manager:v0.4.1 | 2022年4月14日 |
| なし |
v0.4.0 | registry.{REGION}.aliyuncs.com/acs/ack-slo-manager:v0.4.0 | 2022年4月11日 | slo-agent のメモリ消費を最適化しました。 | なし |
2022年2月
バージョン | イメージアドレス | リリース日 | 説明 | 影響 |
v0.3.0 | registry.{REGION}.aliyuncs.com/acs/ack-slo-manager:v0.3.0 | 2022年2月25日 |
| なし |
2021年12月
バージョン | イメージアドレス | リリース日 | 説明 | 影響 |
v0.2.0 | registry.{REGION}.aliyuncs.com/acs/ack-slo-manager:v0.2.0 | 2021年12月10日 |
| なし |
2021年9月
バージョン | イメージアドレス | リリース日 | 説明 | 影響 |
v0.1.1 | registry.{REGION}.aliyuncs.com/acs/ack-slo-manager:v0.1.1-c2ccefa | 2021年9月2日 | 内部インターフェイスを最適化しました。 | なし |
2021年7月
バージョン | イメージアドレス | リリース日 | 説明 | 影響 |
v0.1.0 | registry.{REGION}.aliyuncs.com/acs/ack-slo-manager:v0.1.0-09766de | 2021年7月8日 | 負荷感知 Pod スケジューリングをサポートするようになりました。 | なし |