※ 本記事は、Mickey Boxellによる”Simplify operations with OCI Kubernetes Engine (OKE) add-ons“を翻訳したものです。

2024年10月2日


昨年初め、Oracle Cloud Infrastructure Kubernetes Engine (OKE)は、一般的に使用されるクラスタ・ソフトウェアの導入と継続的なライフサイクル管理を簡素化するクラスタ・アドオンを導入しました。OKEアドオンでは、クラスタ運用ソフトウェアの管理をOracleにオフロードする機会が導入されました。また、これらのアドオンをカスタマイズしたり、同等のソフトウェアを導入するためにデフォルトのKubernetes運用ソフトウェアを完全にオプトアウトしたりする柔軟性を、高度なユース・ケースにもお客様に提供します。

Kubernetes Cluster AutoscalerIstio service meshOCI native ingress controllerKubernetes Metrics Serverの4つの追加アドオンのリリース、およびクラスタにデプロイされたアドオンをより詳細に制御するための新しい構成引数のサポートを共有できることを嬉しく思います。

Kubernetesアドオンとは?

Kubernetesクラスタ・アドオンは、クラスタ機能を実装し、Kubernetesクラスタのコア機能を拡張するソフトウェア・ツールです。アドオン・ソフトウェアは、Kubernetesコミュニティ、サードパーティ・ベンダー、またはOKEなどのクラウド・プロバイダの3つのソースのいずれかによって構築および管理されます。一部のアドオンは、クラスタが正しく動作するために不可欠であり、デフォルトではすべての OKEクラスタにインストールされます。たとえば、CoreDNS、FlannelまたはOCI仮想クラウド・ネットワーク(VCN)ネイティブ podネットワーキング・コンテナ・ネットワーク・インタフェース(CNI)、kube-proxyを選択できます。これらのアドオンは、OKEを介して作成されたすべてのクラスタで確認できます。

その他のアドオンは、Kubernetesのコア機能を拡張してクラスタの管理性とパフォーマンスを向上させるオプション・コンポーネントです。たとえば、Kubernetes Cluster Autoscalerによって、変化するワークロード需要に基づいてクラスタがノードを動的に追加および削除する方法などです。これらのアドオンは、クラスタにデプロイすることを選択した場合にのみ表示されます。

Kubernetes add-ons

アドオンを使うのはなぜですか?

シンプルさ

Kubernetesクラスタととそれらで実行されるワークロードは、多数のコンポーネントで構成されており、その多くはユーザーが維持し運用オーバーヘッドに貢献する責任があります。このオーバーヘッドを最小限に抑えるため、多くのユーザーは、OKEのような信頼できるプロバイダにできるだけ多くのクラスタ・コンポーネントの責任をオフロードすることを好みます。その好みを考慮して、当社が責任を負うことができお客様が使う一般的な運用ソフトウェアを特定しました。このオーナーシップは、コンテナ・イメージとマニフェストの作成から始まり、アドオンの構成と、時間の経過に伴う更新の維持にまで及びます。すべての OKEアドオンには、最新のセキュリティーパッチ、バグ修正が含まれ、OKEとの連携が検証されます。ユーザーは、アドオンの自動更新を選択して、新しいバージョンがリリースされたりクラスタがアップグレードされたりするたびに、その更新がクラスタ内で実行されているアドオンに自動的に適用されます。

アドオンを使用すると、OKEクラスタが安全で安定していることを確認し、運用ソフトウェアのインストール、構成および更新に必要な作業量を一貫して削減できます。アドオンは、ユーザーが自分で選んだサードパーティ製ソフトウェアをクラスタにデプロイする、つまり私たちが提供するアドオンの代替策を含め、その柔軟性を侵害するものではありません。

コントロール

OKEアドオンには、重要なクラスタソフトウェアを構成するためのオプションが用意されています。クラスタにデプロイするオプションのアドオンを有効化するか、必須のアドオンを完全に無効化または無効化するかを選択できます。特定のコンプライアンス要件や監査要件を持つユーザーは、アドオンの更新時に自動更新をオプトインする代わりに、アドオン・バージョンを固定することを選択できます。

各アドオンには、サポートされているカスタマイズ可能な引数のセットが付属しています。アドオンのデフォルト構成は、OKE APIを使用して変更し、必要に応じて更新できます。たとえば、Kubernetes環境でよく見られる汎用認可ドメイン・ネーム・システム(DNS)・サーバーであるCoreDNSには、独自のKubernetes ConfigMapを持ち込むオプションが付属しており、CoreDNSの動作を定義するCorefileセクションがあります。このCorefile構成には、基本機能を拡張するためのDNS機能が異なる複数のCoreDNSプラグインが含まれています。サポートされるこれらのカスタマイズによって、Oracleによるライフサイクル管理の利点を享受しながら、アドオンを特定のユース・ケースにあわせて調整できます。他の引数はすべてのアドオンに共通で、nodeSelectorsのようなオプションや許容値を含み、アドオンpodが実行されるワーカー・ノードを制御するために使用されます。アドオンの引数の詳細は、「クラスタ・アドオンの構成引数」を参照してください。

リリース以来何が変わったのか?

OKEアドオンは、CoreDNSkube-proxyOCI VCNネイティブ podネットワーキングCNIプラグインflannel CNIプラグイン、snfオプション・アドオン(Kubernetes DashboardOracle Database Operator for KubernetesWebLogic Kubernetes Operatorcert-managerなど)など、いくつかの重要なアドオンをサポートして起動されます。リリース以来、私たちはお客様と協力して、OKEアドオンやお客様が管理したいその他の構成オプションを通じてサポートを追加できる、より一般的に使用されるソフトウェアを特定することで、アドオン・モデルへの投資を続けました。このコラボレーションにより、Kubernetes Cluster AutoscalerKubernetes Metrics ServerIstio service mesh、OCI native ingress controllerなどの4つの追加アドオンがリリースされ、すべてのアドオンに適用可能な新しいサポート対象構成引数のサポートが追加されました。次に、変更点を詳しく見ていきましょう。

Cluster Autoscaler

Kubernetes Cluster Autoscalerは、アプリケーション・ワークロードの要求に基づいて、クラスタの管理対象ノード・プールのサイズを自動的に変更します。リソース不足のためにクラスタでpodをスケジュールできない場合、Cluster Autoscalerはワーカー・ノードをノード・プールに追加します。ノードが長時間使用されていない状態で、それらのノードのpodを他の既存のノードに配置できる場合、Cluster Autoscalerはノード・プールからワーカー・ノードを削除します。詳細は、「Kubernetes Cluster Autoscalerのクラスタ・アドオンとしてのデプロイ」を参照してください。

Native Ingress Controller

Kubernetesの世界では、ingressは、インバウンドHTTPおよびHTTPSトラフィックを処理するためのルーティング・ルールおよび構成オプションの集合を構成するオブジェクトです。インターネットからのトラフィックまたはプライベート・ネットワークからのトラフィックへのアクセスを必要とするサービスごとに、LoadBalancerタイプのKubernetesサービスと関連するOCIロード・バランサを作成する必要性を回避するために、単一のイングレス・リソースを使用して、複数のサービスのルーティング・ルールを統合できます。

OCI native ingress controllerは、Kubernetes ingressリソースに定義されたルールおよび構成オプションを実装して、受信トラフィックのロード・バランシングと、クラスタ内のワーカー・ノードで実行されているサービスpodへのルーティングを行います。OCI native ingress controllerは、リクエストを処理するOCIフレキシブル・ロード・バランサを作成し、ingressリソースで定義されたルールに従ってリクエストをルーティングするようにOCIロード・バランサを構成します。ルーティング・ルールまたはその他のサポート・リソースを変更すると、OCI native ingress controllerによって、それに応じてロード・バランサ構成が更新されます。詳細は、スタンドアロン・プログラムとしてではなく、クラスタ・アドオンとしてのOCI native ingress controllerの使用を参照してください。

Istio Service Mesh

Istioは、インバウンド・トラフィックの管理、サービス間通信、テレメトリの収集、クラスタ全体のポリシーの適用に使用されるオープン・ソース・サービス・メッシュです。Istioは、サイドカーとしてデプロイされたEnvoyプロキシを使用して、基礎となるサービスを変更することなく、メッシュ内のすべてのサービスのすべてのインバウンドおよびアウトバウンド・トラフィックを管理します。Istioの詳細については、Istioのドキュメントを参照してください。

OKEを使用してIstioをクラスタ・アドオンとしてデプロイする場合、オプションでIstio ingressゲートウェイを作成して、受信HTTPおよびHTTPSリクエストをルーティングできます。または、サポートされている他のingressを使用して、クラスタで実行されている適切なサービスにトラフィックをルーティングすることもできます。ingressゲートウェイは、すべての受信HTTPおよびHTTPSリクエスト・トラフィックが流れるサービス・メッシュへの単一のエントリ・ポイントです。Istioは、ingressゲートウェイとegressゲートウェイを使用して、サービス・メッシュの端で実行されるロード・バランサを構成します。ingressゲートウェイは、リクエストに基づいて適切なサービスにトラフィックをルーティングします。同様に、egressゲートウェイはサービス・メッシュからの終了ポイントを定義します。詳細は、スタンドアロン・プログラムとしてではなく、OCI native ingress controllerをクラスタ・アドオンとして使用する方法を参照してください。

Metrics Server

Kubernetes Metrics Serverは、リソース使用状況データのクラスタ全体のアグリゲータです。Kubernetes Metrics Serverは、各ワーカー・ノードで実行されているkubeletからリソース・メトリックを収集し、Kubernetes Metrics APIを介してKubernetes APIサーバーに公開します。その他のKubernetesアドオンには、Horizontal Pod AutoscalerVertical Pod Autoscalerなど、Kubernetes Metrics Serverが必要です。詳細は、スタンドアロン・プログラムとしてではなく、クラスタ・アドオンとしてのKubernetes Metrics Serverの使用を参照してください。

追加の構成引数

OKEは、起動後にアドオンをリリースしたことで、すべてのアドオンに適用可能な次のクラスタ・アドオン構成引数のサポートを追加しました。構成引数は、クラスタ・アドオンを有効にするときに渡すキー・バリューのペアです。

  • affinity: Kubernetes node affinityは、Kubernetesスケジューリングの概念で、Kubernetes pod(この場合は選択したクラスタ・アドオンに関連付けられたpod)をKubernetesクラスタ内の特定のノードに割り当てることができます。これにより、一致するラベルを持つノード上にアドオンをスケジュールできるようになります。
  • containerResources: コンテナ・リソースを使用すると、各クラスタ・アドオンのコンテナがリクエストするリソース数量を指定し、それらのコンテナを超えることができないリソース使用率制限を設定できます。この制御は、ユース・ケースで、デフォルトで構成されているものとは異なるリソース要件が必要な場合に役立ちます。
  • rollingUpdate: Rolling update deploymentsでは、アプリケーションの複数のバージョンを同時に実行することがサポートされます。ロールアウト中(進行中または一時停止中)にRollingUpdate deploymentをスケーリングすると、デプロイメント・コントローラは、既存のアクティブなReplicaSets (ReplicaSetsとpod)内の余分なレプリカを均衡させてリスクを軽減します。このプロセスは比例スケーリングと呼ばれます。この引数を使用すると、maxSurgeおよびmaxUnavailableの値を設定することで、ローリング・アップデートの必要な動作を制御できます。
  • topologySpreadConstraints: Topology spread constraintsを使用すると、選択したクラスタ・アドオンに関連付けられたpodがクラスタ全体にどのように分散されるかを制御できます。この機能により、高可用性と効率的なリソース使用率を実現できます。

サポートされるアドオンの引数については引き続きサポートを追加する予定ですので、ワークロードに役立つ特定の引数を見つけたら、お気軽にご連絡ください。

まとめ

アドオン機能の新しい更新により、より多くのアドオンを選択して柔軟性を向上できるよう、サポートされる議論が増えました。これらの変更により、より多くのクラスタ・ソフトウェアを管理する継続的な作業をオフロードできること、および高度なユーザーが複雑なユース・ケースをサポートするためのより多くの構成オプションを提供できることを期待しています。

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