クラスターの安定性と信頼性を確保するために、クラスターノードとして適切なECS (Elastic Compute Service) 仕様を選択することを推奨します。 このトピックでは、ACKクラスターを作成する際のECS仕様の推奨設定について説明します。
クラスター計画
ACKクラスターの作成時に小サイズのECSインスタンスを選択した場合、次の問題が発生する可能性があります。
ネットワークの問題: 小規模なECSインスタンスでは、限られたネットワークリソースしか使用できません。
容量の問題: クラスターの安定性と信頼性を確保するために、システムはCPU、メモリ、ディスクなどのノードリソースを予約して、クラスターを管理し、インフラストラクチャコンポーネントを実行します。 小規模なECSインスタンスは、クラスターのパフォーマンスと可用性に悪影響を与える可能性があります。 ACKクラスター内のノードのCPUおよびメモリリソースの予約ポリシーの詳細については、「リソース予約ポリシー」をご参照ください。
リソースフラグメントの問題: システムがノードリソースを割り当てるときに、コンテナが小サイズのECSインスタンスを占有している場合、ECSインスタンス上の残りのアイドルリソースを使用してコンテナを作成または復元することはできません。 これは資源の浪費をもたらす。 例えば、ノードは整数個のCPUしか割り当てることができないが、ノード上のアプリケーションポッドは少量のCPUリソースしか必要としない。 その結果、残りのCPUリソースが浪費される。
次の利点がある大規模なECSインスタンスを使用することを推奨します。
ネットワークの利点: 帯域幅が大きいアプリケーションの場合、帯域幅が大きいとリソースの使用率が高くなります。 さらに、ECSインスタンス上のコンテナは相互に通信しやすくなり、ネットワーク伝送が減少します。
画像プルの利点: 画像はより効率的にプルされます。 イメージから複数のコンテナを作成するには、イメージを1回だけプルする必要があります。 小型のECSインスタンスを選択した場合、イメージを複数回プルする必要があります。 コンテナを作成するためにECSインスタンスの数もスケールアウトする必要がある場合は、さらに時間がかかります。 その結果、アプリケーションのレスポンスレイテンシが増加します。
ECS仕様の選択方法の詳細については、以下の内容をご参照ください。
ECS仕様を選択してワーカーノードを作成する
ノードの仕様は、4 vCPU、8 GB以上のメモリである必要があります。
ACKクラスター内のvCPUの総数と、ACKクラスターが許容する最大障害率に基づいて、ワーカーノードの仕様を決定します。
たとえば、ACKクラスターが160のvCPUを必要とし、10% の障害率を許容できる場合、インスタンスごとに16のvCPUを持つ少なくとも10のECSインスタンスを選択することを推奨します。 これにより、ピーク時に少なくとも144のvCPUを消費できるようになります。 この制限は、160 vCPU × 90% = 144 vCPUの計算に基づいています。 ACKクラスターが最大障害率20% をサポートしている場合、インスタンスごとに32 vCPUを持つECSインスタンスを少なくとも5つ選択することを推奨します。 これにより、ピーク時に少なくとも128のvCPUを消費できるようになります。 この制限は、160 vCPU × 80% = 128 vCPUの計算に基づいています。 これにより、ECSインスタンスがダウンしても、残りのECSインスタンスは引き続きワークロードに対応し、高可用性を確保できます。
ACKクラスターに1,000のvCPUが必要な場合は、ECS Bare Metalインスタンスを選択できます。 詳細については、「ECS Bare Metalインスタンスの使用シナリオと利点」をご参照ください。
ポッドのリソース要求に基づいてvCPUとメモリの比率 (1:2または1:4など) を決定します。 Javaアプリケーションなど、高いメモリ使用量を必要とするアプリケーションの場合は、vCPUとメモリの比率を1:8に選択することを推奨します。
ECS仕様を選択してマスターノードを作成する
ACKクラスターが作成されると、マスターノードはetcd、kube-apiserver、kube-controllerなどのコアコンポーネントを実行します。 運用環境にデプロイされているACK専用クラスターの場合、クラスターの安定性に影響を与えないように、適切なマスターノード仕様を選択する必要があります。 マスターノードの仕様は、ACKクラスターのサイズに依存します。 より大きなACKクラスタは、より高い仕様を必要とする。
ACKクラスターのサイズは、ノード数、ポッド数、デプロイ頻度、リクエスト数などの複数の要因に基づいて決定されます。 このトピックでは、クラスターサイズはノード数に基づいて決定されます。
個別のテストと学習には、小型のECSインスタンスを使用することを推奨します。 次の表に、本番環境にデプロイされたマスターノードに推奨されるECS仕様を示します。 提案された仕様は、マスタノードの負荷を低いレベルに維持することができる。
ノード数 | 推奨されるマスターノード仕様 |
1〜5ノード | 4 vCPU、8 GB (2 vCPU、4 GB以下の仕様は推奨されません) |
6〜20ノード | 4 vCPU、16 GB |
21から100ノード | 8 vCPU、32 GB |
200ノードへの100 | 16 vCPU、64 GB |
500ノードへの200 (爆風半径を推定する必要があります) | 64 vCPU、128 GB |
ECS Bare Metalインスタンスのシナリオと利点の使用
ECS Bare Metal Instanceは、最先端の仮想化2.0テクノロジーに基づいてAlibaba Cloudが開発した革新的なコンピューティングサービスです。 仮想化2.0は、ECSベアメタルインスタンスに、仮想マシン (ECSインスタンス) の柔軟性、物理マシンのパフォーマンスと機能、およびネストされた仮想化の完全サポートを提供します。
ECS Bare Metalインスタンスには、専用のコンピューティングリソース、暗号化されたコンピューティング、新しいハイブリッドクラウドの構築という利点があります。 CS Bare Metalインスタンスおよびサポートされるインスタンスファミリーの詳細については、「概要」をご参照ください。
ECS Bare Metalインスタンスの使用シナリオには、以下が含まれますが、これらに限定されません。
ACKクラスターでは、ワークロードを処理するために最大1,000のvCPUが必要です。 各ECS Bare Metalインスタンスには、少なくとも96個のvCPUがあります。 大規模なクラスターシナリオでは、10個または11個のECS Bare Metalインスタンスを使用してACKクラスターを作成できます。
短時間でスケールアウトします。 eコマースのプロモーションイベントなどのシナリオでは、ECS Bare Metalインスタンスのパフォーマンスは、同じ構成の物理マシンのパフォーマンスよりも優れています。 ECS Bare Metalインスタンスは、トラフィックスパイクを処理するために数百万のvCPUを提供します。
サポートされていないECS仕様
一般的な制限
クラスターの安定性とセキュリティを確保するために、次の表に示すインスタンス仕様を使用してワーカーノードまたはマスターノードを作成することはできません。
サポートされていないインスタンスファミリまたはインスタンスファミリカテゴリ | サポートされていないインスタンス仕様 | 説明 | 注 |
t6:バースト可能インスタンスファミリー | ecs.t5-lc2m1.nano | インスタンスのパフォーマンスが不安定で、クラスターが不安定になる可能性があります。 | なし |
t6:バースト可能インスタンスファミリー | ecs.t6-c4m1.large | インスタンスのパフォーマンスが不安定で、クラスターが不安定になる可能性があります。 | なし |
vCPUコア数が4未満のインスタンスの仕様 | ecs.g6.large | インスタンスのパフォーマンスが低いため、クラスターが不安定になる可能性があります。 | Quota Centerコンソールに移動して、低仕様のECSインスタンスをサポートするクラスターとノードプールを作成できます。 |
c6t、セキュリティ強化されたコンピューティング最適化インスタンスファミリー | ecs.c6t.large | 非対応 | なし |
g6t、セキュリティ強化された汎用インスタンスファミリー | ecs.g6t.large | 非対応 | なし |
SCC (Super Computing Cluster) インスタンスファミリー | ecs.sccg7.32xlarge | 非対応 | なし |
ACKでサポートされているGPU高速化ECSインスタンスタイプの詳細については、「ACKでサポートされているGPU高速化ECSインスタンスタイプ」をご参照ください。
Terwayネットワークプラグインの制限
Terwayモードでは、ノード上のポッドの最大数は、ECSインスタンスによって提供されるelastic network Interface (ENI) の数に基づいて計算されます。 異なるTerwayモードは異なるECS仕様をサポートします。 詳細については、「Terwayでの作業」をご参照ください。
共有ENIモードまたは共有ENI + トランクENI: ノードのポッドの上限は11より大きくなければなりません。
(EniQuantity- 1) × EniPrivateIpAddressQuantity > 11
。 EniQuantityはECSインスタンスタイプによって提供されるENIの数であり、EniPrivateIpAddressQuantityはENIによって提供されるプライベートIPアドレスの数です。たとえば、ecs.g6.largeインスタンスは2つのENIを提供し、各ENIは6つのプライベートIPv4アドレスを提供します。
ノード上のポッドの最大数は (2 - 1) × 6 = 6
です。 ecs.g6.largeインスタンスは、共有ENIモードおよび共有ENI + トランクENIモードでは使用できません。Exclusive ENI: ノードのポッドの上限は6より大きくなければなりません。
EniQuantity- 1 > 6
。たとえば、ecs.g6.xlargeインスタンスは3つのENIを提供します。
ノード上のポッドの最大数は (3 - 1) = 2
です。 ecs.g6.xlargeインスタンスは、排他的ENIモードでは使用できません。