X

オラクルエンジニア通信では、オンプレミスからクラウドまで、オラクルテクノロジーの最新情報をお届けします

Oracle Container Engine for Kubernetes (OKE) でクラスタ・ノード・オートスケーリング

Ryusaburo Tanaka
Business Development, Cloud Native Services

※このページはのCluster node autoscaling with OCI Container Engine for Kubernetesの翻訳です。

Oracle Container Engine for Kubernetes(OKE)は、コンテナ化されたアプリケーションをクラウドにデプロイするために使用され、エンタープライズ・グレードのKubernetesクラスタの作成、および運用する際の運用上の負担を軽減します。Oracleはクラスタのリソースを管理し、繰り返し発生するKubernetesの管理タスクとスケーリング・タスクを自動化して、Kubernetesの運用を簡素化します。これまでOKEのお客様は、変化するリソース要件を満たすために、ポッドレベルのオートスケーリングを使用してきました。 このアプローチは多くのユースケースに適していますが、基盤となるノードのリソースは手動でスケーリングする必要があるため、クラスタ管理者に不必要な負担がかかるケースがありました。

Oracle Container Engine for Kubernetes(OKE)のクラスタ・ノード・オートスケーリングの機能が一般提供されることをお知らせします。クラスタ・ノード・オートスケーリングを使用して、ワークロードの需要に基づいてノード・プールを動的にスケーリングできるようになりました。

Kubernetesクラスタを自動でスケーリング

時々、アプリケーションは動的な対応が必要とされることがあります。 例えば Eコマースのアプリケーションは、ホリデー・シーズンや掲載商品が突然人気になるといった理由により、アクセス数の増加に直面する可能性があります。 そうしたアプリケーションのKubernetesクラスタは、変動する需要に適応する必要があります。さもないと、リソース不足による可用性の問題や、リソースの過剰プロビジョニングによる追加コストのリスクがあります。

OKEを使用すると、Kubernetes Metrics Server、またはその他のオープンソースのメトリクス・サーバーからのデータを使用して、クラスタ内のpodを水平、または垂直にスケーリングすることにより、アプリケーションのサイズを適切に設定できます。 Kubernetes水平ポッド・オートスケーラ(Horizontal Pod Autoscaler)はポッドの数を調整し、Kubernetes垂直ポッド・オートスケーラ(Vertical Pod Autoscaler)はポッドで実行されているコンテナのリソース・リクエストと制限を調整します。 どちらのソリューションもCPU使用率に基づいて調整を行い、Horizontal Pod Autoscalerはカスタム・メトリックもサポートします。 これらは、ポッドレベルのオート・スケーリングに対応していますが、基盤となるリソースのスケーリングには対応していません。 OKEでは、これらの基盤となるリソースを手動でスケーリングできます(クラスタのノードプール内のワーカー・ノードのシェイプと数)。 手動スケーリングは予測可能なワークロードに対しては機能しますが、予測不可能なワークロードには適さない場合があり、クラスタ管理者に不必要な負担をかけます。

この課題は、OKEが今回サポートしたKubernetes クラスタ・オートスケーラを使用して解決できます。クラスタ・オートスケーラは、ワークロードの需要に基づいて、Kubernetesクラスタのノードプールのサイズを自動的に調整します。 これは、OCIコンピューティング・リソースの使用とコストを最適化するのに役立ちます。 需要が増加すると、ノードの数はその需要を満たすためにスケールアップされます。 需要が減少すると、クラスタに割り当てられた過剰なリソースを残さず、ノードの数が削減します。

前述のEコマースのアプリケーションに話を戻しましょう。 アプリケーションを担当するクラスタ管理者は、Kubernetes Mertics Serverをクラスタにデプロイし、CPUとメモリの使用率に基づいてKubernetesのDeploymentのレプリカを作成するようにHorizontal Pod Autoscaler(HPA)を構成します。 さらに一歩進んで、Vertical Pod Autoscaler(VPA)のレコメンダー・コンポーネントを使用して、コンテナの理想的なCPUおよびメモリ要求値を決定します。

管理者はミッションクリティカルなアプリケーションを扱っているため、pod disruption budgetを指定します。これにより、アプリケーションの可用性を維持するための自発的な中断(Voluntary Disruption)や、その他のKubernetes機能のために同時に使用できないポッドの総数を制限します。これまでの自動化はここまででした。管理者は、ノードプール内のノードの数とサイズを手動でスケーリングする必要がありました。

クラスタ・オートスケーラの導入により、ノードのスケーリングも自動化できます。 クラスタ管理者は、クラスタ・オートスケーラをデプロイし、ステートレスなワークロードでノードプールをスケーリングするように構成します。 こうしたプールへのノードの追加・削除の制御を維持するために、StatefulSet、およびkube-system podを実行するノードプールを含めないことを選択します。

クラスタ・オートスケーラを設定した後に高トラフィック期間が発生すると、HPAはポッドレベルでスケーリングをトリガーします。レプリカの数がノードが処理できる数を超えて増加し、ポッドがスケジュール不能になったときに、クラスタ・オートスケーラが起動してスケジュールされたpodのためにノードを作成します。トラフィックの多い期間が収まると、HPAはレプリカの数を適切なレベルに自動スケーリングし、クラスタ・オートスケーラはノードの数をスケールダウンします。

クラスタ・オートスケーラは、Kubernetesバージョン1.17以降を実行しているクラスタでサポートされています。クラスタ・オートスケーラは、クラスタ内のデプロイメントとして実行され、指定されたノードプール内のワーカーノードをスケーリングします。

更なる情報については

詳細については、次のリソースを参照してください。

Be the first to comment

Comments ( 0 )
Please enter your name.Please provide a valid email address.Please enter a comment.CAPTCHA challenge response provided was incorrect. Please try again.