Container Service for Kubernetes(ACK)クラスターにアプリケーションを作成またはデプロイする場合、必要に応じてPodのスケジューリングルールを変更し、できるだけ多くのノードとゾーンにPodをデプロイして、アプリケーションの可用性を向上させることができます。このトピックでは、スケジューリングルールを構成する方法について説明します。
アプリケーションの作成時にスケジューリングルールを構成する
EDAS console にログオンします。左側のナビゲーションペインで、 を選択します。[アプリケーション] ページが表示されます。トップナビゲーションバーで、リージョンを選択します。ページの上部で、名前空間を選択します。左上隅にある [アプリケーションの作成] をクリックします。
- [基本情報] 手順で、[クラスタータイプ] パラメーターと [アプリケーションランタイム環境] パラメーターを設定し、[次へ] をクリックします。次の表に、パラメーターについて説明します。
パラメーター 説明 クラスタータイプ アプリケーションをデプロイするクラスターのタイプ。[kubernetesクラスター] を選択します。 アプリケーションランタイム環境 アプリケーションランタイム環境。アプリケーションのタイプに基づいて、アプリケーションランタイム環境を選択します。 - Java:
- カスタム: カスタムイメージを使用してACKクラスターにアプリケーションをデプロイする場合に、このオプションを選択します。
- Java: ユニバーサル JAR パッケージを使用して、アプリケーションをDubboまたは Spring Boot アプリケーションとしてデプロイする場合に、このオプションを選択します。このオプションを選択した後、[Java環境] パラメーターを設定できます。
- Tomcat: ユニバーサル WAR パッケージを使用して、アプリケーションをDubboまたは Spring アプリケーションとしてデプロイする場合に、このオプションを選択します。このオプションを選択した後、[Java環境] パラメーターと [コンテナーバージョン] パラメーターを設定できます。
- EDAS-Container (HSF): WAR または FatJar パッケージを使用して、アプリケーションをHigh-speed Service Framework (HSF) アプリケーションとしてデプロイする場合に、このオプションを選択します。このオプションを選択した後、[Java環境]、[Pandoraバージョン]、[Ali-Tomcatバージョン] パラメーターを設定できます。
- PHP: アプリケーションをApache HTTP Server上で実行される PHP アプリケーションとしてデプロイする場合に、このオプションを選択します。
- Node.js、c++、go、およびその他の言語: カスタムイメージを使用してマイクロサービスアプリケーションをデプロイする場合に、このオプションを選択します。アプリケーションは任意のプログラミング言語で開発できます。
- Java:
[構成] 手順で、アプリケーションの環境情報、基本情報、およびデプロイ方法を構成し、関連するリソースパラメーターを設定して、[次へ] をクリックします。
- [詳細設定] 手順で、[スケジューリングルール] をクリックし、必要に応じてスケジューリングモードとルールを構成します。
- [組み込み構成] モードを選択します。
パラメーター 説明 ゾーンスケジューリング - デフォルトのスケジューリング: デフォルトでは、Podはクラスターリソースの状態に基づいてスケジュールされます。システムはすべてのPodを同じゾーンにデプロイする場合があります。したがって、このスケジューリングルールは高可用性を保証するものではありません。
- できるだけ多くのゾーンにデプロイ: アンチアフィニティルールを使用して、Podをできるだけ多くのゾーンにデプロイし、高可用性を確保します。
ノードスケジューリング - デフォルトのスケジューリング: デフォルトでは、Podはクラスターノードの負荷に基づいてスケジュールされます。
- できるだけ多くのノードにデプロイ: Podはできるだけ多くのノードにデプロイされ、高可用性が確保されます。
- [カスタム構成] モードを選択します。
複雑なシナリオで、ゾーンまたはノードに基づく組み込みのスケジューリングルールが要件を満たせない場合は、Enterprise Distributed Application Service (EDAS) が提供するカスタム構成機能を使用して、独自のルールをカスタマイズすることもできます。
表 1. ノードアフィニティでスケジューリングルールを作成する パラメーター 説明 セレクター ノードをフィルタリングするために使用される条件。[ノードタグキー]、[演算子]、[ノードタグ値] パラメーターを設定して、Podがデプロイされるノードを指定できます。
重み ルールの重み。有効な値: 0~100の整数。デフォルト値: 1。 表 2. アプリケーションアフィニティでスケジューリングルールを作成する パラメーター 説明 Kubernetes名前空間 アプリケーションをホストするACKクラスターの名前空間。 トポロジーキー ノード、ゾーン、リージョンなど、異なるノードが同じトポロジードメイン内にあるかどうかを判断するために使用されるノードラベルのキー。 セレクター Podをフィルタリングするために使用される条件。[アプリケーションタグキー]、[演算子]、[アプリケーションタグ値] パラメーターを設定して、対応するトポロジードメインで実行するPodを決定できます。 重み ルールの重み。有効な値: 0~100の整数。デフォルト値: 1。 表 3. アプリケーションアンチアフィニティでスケジューリングルールを作成する パラメーター 説明 Kubernetes名前空間 アプリケーションをホストするACKクラスターの名前空間。 トポロジーキー ノード、ゾーン、リージョンなど、異なるノードが同じトポロジードメイン内にあるかどうかを判断するために使用されるノードラベルのキー。 セレクター Podをフィルタリングするために使用される条件。[アプリケーションタグキー]、[演算子]、[アプリケーションタグ値] パラメーターを設定して、対応するトポロジードメインで実行するPodを決定できます。 重み ルールの重み。有効な値: 0~100の整数。デフォルト値: 1。 表 4. toleration でスケジューリングルールを作成する パラメーター 説明 タグキー taint と一致するために使用されるキー。 演算子 taint と一致するために使用される演算子。 タグ値 taint と一致するために使用される値。 toleration は、設定した [タグキー]、[タグ値]、[演算子]、[効果] パラメーターに基づいて taint と一致します。 効果 ノード上の taint が toleration された後に適用される効果。 許容範囲 (秒) [効果] パラメーターが [noexecute] に設定されている場合にのみ、このパラメーターを設定できます。
taint が toleration された後、Podがノード上で実行できる時間。このパラメーターが設定されていない場合、Podはノード上で実行を継続できます。 - [組み込み構成] モードを選択します。
[アプリケーションの作成] をクリックします。
[作成完了] ページで、[基本情報]、[構成]、および [詳細設定] セクションの情報を確認します。次に、[アプリケーションの作成] をクリックします。
[アプリケーション概要] ページの上部にある、[詳細の表示] をクリックします。[変更リスト] ページで、アプリケーションの変更プロセスを表示します。アプリケーションがデプロイされるまで数分待ちます。アプリケーションの変更プロセスが完了したら、[アプリケーション概要] ページの [基本情報] セクションでインスタンスの状態を表示します。ステータスに Pod が実行中と表示されている場合は、アプリケーションがデプロイされています。
アプリケーションの更新時にスケジューリングルールを構成する
アプリケーションの作成時またはデプロイ時にスケジューリングルールを構成できます。
EDAS console にログオンします。
左側のナビゲーションペインで、 をクリックします。トップナビゲーションバーで、リージョンを選択します。ページの上部で、名前空間を選択します。[コンテナサービスまたはサーバーレス Kubernetes クラスター] を [クラスタータイプ] ドロップダウンリストから選択します。次に、デプロイするアプリケーションを見つけ、アプリケーション名をクリックします。
[概要] または [基本情報] ページで、右上隅にある を選択します。
[デプロイモードの選択] ページで、デプロイモードを選択し、指定されたデプロイモードセクションの右上隅にある [デプロイの開始] をクリックします。
- 環境とデプロイパッケージの情報を設定し、[スケジューリングルール] をクリックし、必要に応じて構成を完了して、[OK] をクリックします。
- [組み込み構成] モードを選択します。
パラメーター 説明 ゾーンスケジューリング - デフォルトのスケジューリング: デフォルトでは、Podはクラスターリソースの状態に基づいてスケジュールされます。システムはすべてのPodを同じゾーンにデプロイする場合があります。したがって、このスケジューリングルールは高可用性を保証するものではありません。
- できるだけ多くのゾーンにデプロイ: アンチアフィニティルールを使用して、Podをできるだけ多くのゾーンにデプロイし、高可用性を確保します。
ノードスケジューリング - デフォルトのスケジューリング: デフォルトでは、Podはクラスターノードの負荷に基づいてスケジュールされます。
- できるだけ多くのノードにデプロイ: Podはできるだけ多くのノードにデプロイされ、高可用性が確保されます。
- [カスタム構成] モードを選択します。
複雑なシナリオで、ゾーンまたはノードに基づく組み込みのスケジューリングルールが要件を満たせない場合は、Enterprise Distributed Application Service (EDAS) が提供するカスタム構成機能を使用して、独自のルールをカスタマイズすることもできます。
表 1. ノードアフィニティでスケジューリングルールを作成する パラメーター 説明 セレクター ノードをフィルタリングするために使用される条件。[ノードタグキー]、[演算子]、[ノードタグ値] パラメーターを設定して、Podがデプロイされるノードを指定できます。
重み ルールの重み。有効な値: 0~100の整数。デフォルト値: 1。 表 2. アプリケーションアフィニティでスケジューリングルールを作成する パラメーター 説明 Kubernetes名前空間 アプリケーションをホストするACKクラスターの名前空間。 トポロジーキー ノード、ゾーン、リージョンなど、異なるノードが同じトポロジードメイン内にあるかどうかを判断するために使用されるノードラベルのキー。 セレクター Podをフィルタリングするために使用される条件。[アプリケーションタグキー]、[演算子]、[アプリケーションタグ値] パラメーターを設定して、対応するトポロジードメインで実行するPodを決定できます。 重み ルールの重み。有効な値: 0~100の整数。デフォルト値: 1。 表 3. アプリケーションアンチアフィニティでスケジューリングルールを作成する パラメーター 説明 Kubernetes名前空間 アプリケーションをホストするACKクラスターの名前空間。 トポロジーキー ノード、ゾーン、リージョンなど、異なるノードが同じトポロジードメイン内にあるかどうかを判断するために使用されるノードラベルのキー。 セレクター Podをフィルタリングするために使用される条件。[アプリケーションタグキー]、[演算子]、[アプリケーションタグ値] パラメーターを設定して、対応するトポロジードメインで実行するPodを決定できます。 重み ルールの重み。有効な値: 0~100の整数。デフォルト値: 1。 表 4. toleration でスケジューリングルールを作成する パラメーター 説明 タグキー taint と一致するために使用されるキー。 演算子 taint と一致するために使用される演算子。 タグ値 taint と一致するために使用される値。 toleration は、設定した [タグキー]、[タグ値]、[演算子]、[効果] パラメーターに基づいて taint と一致します。 効果 ノード上の taint が toleration された後に適用される効果。 許容範囲 (秒) [効果] パラメーターが [noexecute] に設定されている場合にのみ、このパラメーターを設定できます。
taint が toleration された後、Podがノード上で実行できる時間。このパラメーターが設定されていない場合、Podはノード上で実行を継続できます。重要 [OK] をクリックすると、アプリケーションが再起動されます。この操作は、オフピーク時に実行することをお勧めします。 - [組み込み構成] モードを選択します。