デフォルトでは、Container Service for Kubernetes (ACK) のノードプールおよびマネージドノードプール内のノードは、自動的にスケールインまたはスケールアウトすることはできません。 Terraformを使用して、自動スケーリングが有効になっているノードプールを作成できます。 このトピックでは、Terraformを使用して、自動スケーリングが有効になっているノードプールを作成する方法について説明します。
前提条件
Terraformがインストールされています。
説明Terraform 0.12.28以降をインストールする必要があります。 terraform -- versionコマンドを実行して、Terraformバージョンを照会できます。
デフォルトでは、Cloud ShellにTerraformがプリインストールされており、アカウント情報も指定されています。 設定を変更する必要はありません。
Cloud Shell以外の方法でTerraformをインストールする方法の詳細については、「ローカルPCでのTerraformのインストールと構成」をご参照ください。
自動スケーリング機能は、Alibaba Cloudサービスのauto scalingに依存しています。 したがって、ノードの自動スケーリングを有効にする前に、Auto Scalingを有効にし、Auto Scalingのデフォルトロールをアカウントに割り当てる必要があります。 詳細については、「Auto Scalingの有効化」をご参照ください。
説明alicloud_cs_kubernetes_autoscalerコンポーネントを使用した場合、Auto Scalingがアクティブになります。
Auto Scaling関連のポリシーは、Resource Access Management (RAM) コンソールでアカウントにアタッチされます。 これにより、Auto Scalingにアクセスするために必要な権限がクラスターに付与されます。 RAMポリシーをアタッチする方法の詳細については、「権限付与」をご参照ください。
Operation Orchestration Service (OOS) にアクセスする権限が付与されます。 OOSアクセス権限を提供するAliyunOOSLifecycleHook4CSRoleロールを作成するには、次の手順を実行します。
AliyunOOSLifecycleHook4CSRoleをクリックします。
説明現在のアカウントがAlibaba Cloudアカウントの場合、AliyunOOSLifecycleHook4CSRoleをクリックします。
現在のアカウントがRAMユーザーの場合、Alibaba CloudアカウントにAliyunOOSLifecycleHook4CSRoleロールが割り当てられていることを確認します。 次に、AliyunRAMReadOnlyAccessポリシーをRAMユーザーにアタッチします。 詳細については、「RAMユーザーへの権限付与」をご参照ください。
[クラウドリソースアクセス権限付与] ページで、[権限付与に同意する] をクリックします。
アカウント情報が設定されています。
次のコマンドを実行して、ID認証情報を保存する環境変数を作成します。
Linux環境
export ALICLOUD_ACCESS_KEY="************" # Replace the value with the AccessKey ID of your Alibaba Cloud account. export ALICLOUD_SECRET_KEY="************" # Replace the value with the AccessKey secret of your Alibaba Cloud account. export ALICLOUD_REGION="cn-beijing" # Replace the value with the ID of the region in which your cluster resides.
Windows環境
set ALICLOUD_ACCESS_KEY="************" # Replace the value with the AccessKey ID of your Alibaba Cloud account. set ALICLOUD_SECRET_KEY="************" # Replace the value with the AccessKey secret of your Alibaba Cloud account. set ALICLOUD_REGION="cn-beijing" # Replace the value with the ID of the region in which your cluster resides.
説明権限管理の柔軟性とセキュリティを向上させるために、Terraformという名前のResource Access management (RAM) ユーザーを作成することをお勧めします。 次に、RAMユーザーのAccessKeyペアを作成し、RAMユーザーに権限を付与します。 詳細については、「RAMユーザーの作成」および「RAMユーザーへの権限付与」をご参照ください。
背景情報
Terraformは、Terraformプロバイダーを通じて新しいインフラストラクチャをサポートするオープンソースツールです。 Terraformを使用して、クラウドのインフラストラクチャとリソースをプレビュー、設定、管理できます。 詳しくは、「Terraform とは」をご参照ください。
Alibaba Cloud Providerの以前のバージョンでは、ACKはalicloud_cs_kubernetes_autoscalerという名前のコンポーネントを提供します。 alicloud_cs_kubernetes_autoscalerコンポーネントを使用して、ノードの自動スケーリングを有効にできます。 ただし、次の制限が適用されます。
構成は複雑であり、コストが高い。
スケーリングされる各ノードはデフォルトのノードプールに追加され、個別に維持することはできません。
一部のパラメータは変更できません。
Alibaba Terraform Provider 1.111.0以降では、alicloud_cs_kubernetes_node_poolコンポーネントを使用して自動スケーリングが有効になっているノードプールを作成できます。 このコンポーネントには次の利点があります。
簡単なスケーリング設定を提供します。 スケーリンググループのノード数の下限と上限を設定するだけです。
オプションパラメーターのデフォルト設定を使用して、ノード間の環境の不一致を防ぎます。 これにより、ユーザーエラーが防止されます。 たとえば、ノードごとに異なるオペレーティングシステム (OS) イメージを構成できます。
ACKコンソールでノードプール内のノードの変更を明示的に表示できます。
Terraformを使用して自動スケーリングが有効になっているノードプールを作成する
alicloud_cs_kubernetes_autoscalerコンポーネントを使用している場合は、クラスターにAuto Scalingへのアクセスを許可し、次の手順を実行してalicloud_cs_kubernetes_node_poolコンポーネントに切り替えます。 次に、クラスターで自動スケーリングが有効になっているノードプールを作成できます。
alicloud_cs_kubernetes_autoscalerコンポーネントを使用していない場合は、手順1と手順2をスキップします。 ステップ3に進みます。
autoscaler-meta ConfigMapを変更します。
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、 を選択します。
ConfigMapページの左上隅で、名前空間ドロップダウンリストからkube-systemを選択します。 autoscaler-meta ConfigMapを見つけて、[操作] 列の [編集] をクリックします。
[編集] パネルで、autoscaler-meta ConfigMapの値を変更します。
tains
の値を文字列型から配列型に変更する必要があります。 この場合、[値] テキストボックスで"taints":""
を"taints":[]
に変更します。クリックOK.
ノードプールを同期します。
詳細ページの左側のナビゲーションウィンドウで、 を選択します。
の右上隅にノードプールページをクリックします。同期ノードプール.
alicloud_cs_kubernetes_autoscalerコンポーネントを使用していない場合は、次の手順を実行します。
Terraformを使用して、自動スケーリングが有効になっているノードプールを作成します
ノードプール設定ファイルを作成します。
次のコードは、既存のACKクラスターで自動スケーリングが有効になっているノードプールを作成する方法の例を示しています。
次のコードでは、ACK管理クラスターと、クラスターで自動スケーリングが有効になっているノードプールを作成する方法の例を示します。Create an ACK managed cluster
を実行します。Run the
terraform apply
コマンドを実行して、ノードプールを作成します。
ノードプールの作成後、[ノードプール] ページでノードプールを見つけることができます。 ノードプールの名前の下にAuto Scaling Enabledが表示されます。