※ 本記事は、Mickey Boxellによる”OCI Kubernetes Engine (OKE) Introduces Support for Mixed Node Clusters“を翻訳したものです。

2026年2月16日


OCI Kubernetes Engine (OKE)サービスの大幅な拡張(混合ノード・クラスタのサポート)を発表します。この新機能では、1つのOKEクラスタ内で初めて管理対象ノード仮想ノードおよび自己管理ノードをすべて使用できるようにすることで、顧客がKubernetesワークロードをデプロイおよび管理する方法が根本的に変わります。

最新のKubernetesデプロイメントの課題

今日の組織は、Kubernetes環境内で多様なアプリケーションを実行する必要があります。従来のデータベースやステートフル・アプリケーションなどの一部のワークロードでは、予測可能なパフォーマンス、特定のハードウェア構成、および基盤となるインフラストラクチャに対する高度な制御が必要になります。ステートレス・マイクロサービスなどの他のワークロードでは、柔軟なスケーリング、サーバーレスな運用モデル、最小限の管理オーバーヘッドが求められます。新しいクラスのAI/MLワークロードには、GPUアクセラレータへのアクセスと高パフォーマンス、低レイテンシのRDMAネットワーキングなど、別の要件があります。

従来、組織は、これらの多様なニーズに対応するために、完全に別々のクラスタを管理することを余儀なくされていました。このアプローチにより、運用の複雑さが生じ、管理オーバーヘッドが増加し、非効率的なリソース使用率につながりました。OKEの新しい混合ノード・サポートは、これに正面から対処し、すべてのワークロード・タイプに最適なインフラストラクチャをサポートする、統一された効率的で柔軟なプラットフォームを提供します。

OKEノード・タイプの理解

OKEには、3つの異なるノード・タイプがあり、それぞれ異なる運用要件と技術要件を満たすように設計されています:

  • 管理対象ノード: これらは、インフラストラクチャのライフサイクルがOKE APIを介して管理される標準のOCIコンピュート・インスタンスです。これらは、ノードの構成(シェイプ、OS、ストレージ)を詳細に制御し、特定のハードウェア・アクセス、永続ストレージまたは予測可能なパフォーマンスを必要とするワークロードに最適です。
  • 仮想ノード: これは、OKEのサーバーレスKubernetesエクスペリエンスです。仮想ノードは、基礎となるインフラストラクチャを完全に抽象化するため、ユーザーはノード・インフラストラクチャを管理、スケーリング、アップグレードまたはトラブルシューティングすることなく、コンテナを大規模に実行できます。これらは、非常に柔軟でステートレスなアプリケーションに最適です。
  • 自己管理ノード: 一般的な用途ではあまり利用されませんが、これらはお客様が作成および完全に管理するOCI Computeインスタンスであり、きわめて限定的で特殊なユース・ケースを最大限に制御します。

混合ノード・クラスタの機能

混合ノード・クラスタでは、単一のKubernetesクラスタ内でこれらのノード・タイプを結合できます。この機能により、強力な新しいデプロイメント戦略と運用効率を実現できます。
たとえば、お客様は、永続ストレージと予測可能なコンピュートを必要とするステートフル・ワークロードをクラスタ内の管理対象ノードに配置できるようになりました。同時に、APIフロントエンドや処理キューなどのステートレス・ワークロード仮想ノードにデプロイできます。さらに、AI/MLワークロード(マルチノード・トレーニングに高スループットと低レイテンシの接続を必要とするワークロードなど)を自己管理ノードにデプロイできます。

この戦略的な配置により、お客様は、動的アプリケーションの大部分に対してサーバーレス仮想ノードの運用上のシンプルさと自動スケーリングの利点を活用しながら、重要なステートフル・コンポーネントの管理対象ノードのインフラストラクチャの制御と予測可能性を維持し、自己管理ノードが最高のパフォーマンスAI/MLワークロードのために利用できる高度な構成オプションを維持できます。その結果、高度に最適化され、効率的で回復力のあるKubernetes環境が実現します。

混合ノード・クラスタの主な利点

  • 最適なワークロードの配置: 技術要件、コストに関する考慮事項、運用ニーズに基づいて、適切なワークロードと適切なインフラストラクチャ・タイプを容易に照合できます。
  • シンプルな管理: 異なるワークロードを単一の統合OKEクラスタに統合し、複数の別々のクラスタの管理と比較して全体的な運用オーバーヘッドを削減します。
  • リソース使用率の向上: アプリケーションの特定のコンポーネントを個別に効率的にスケーリングし、必要に応じて仮想ノードの即時サーバーレス・スケーリングを活用します。
  • 柔軟性の強化: アプリケーション・アーキテクチャの進化に伴い、異なるノード・タイプにまたがってアプリケーションをシームレスに移行またはデプロイできます。すべて同一クラスタ内で実行できます。

はじめに

混合ノード・クラスタ・サポートの導入により、クラス最高の柔軟で強力なKubernetesプラットフォームを提供するというOracleはこの分野への取り組みをさらに強化します。この機能は現在、OCIの商用リージョンのすべてのOKEのお客様にご利用いただけます。既存および新規ユーザーは、OCIコンソール、CLI、API、SDK、Terraformなど、あらゆるアクセス方法で、この機能の活用をすぐに開始できます。

混合ノード・クラスタを作成するには:

  1. まず、OKEクラスタを作成します。
  2. 1つの管理対象ノード・プールと1つの仮想ノード・プールをクラスタにデプロイします。各プールに少なくとも1つのノードがあることを確認します。
  3. ノードが作成されると、ラベルやノード・セレクタ調整および許容範囲アフィニティおよびアンチアフィニティなどのKubernetesスケジューリングの概念を使用して、ワークロードをスケジュールするノードのタイプを選択できます。

クラスタ構成内で様々なタイプのノード・プールを定義できるため、スケジューラは標準のKubernetesラベルおよびtaintを使用してpodを戦略的に配置できます。OKEノードには、ノード・タイプを識別するデフォルトのラベルが付属しています。たとえば:

わかりやすくするために、node_type=managednode_type=virtualなどの追加情報でノードにラベルを付けることができます。例:

$ kubectl label node 10.0.10.251 node_type=virtual --overwrite
node/10.0.10.251 labeled
$ kubectl label node 10.0.10.166 node_type=managed --overwrite
node/10.0.10.166 labeled

​ラベルがノードに適切に適用されたことを確認するには、次のラベルを検索します:

$ kubectl get nodes -l node_type=managed
NAME         STATUS   ROLES   AGE     VERSION
10.0.10.166   Ready   node   6m43s   v1.34.1
10.0.10.171   Ready   node   3m48s   v1.34.1
10.0.10.76   Ready   node   3m33s   v1.34.1
​
$ kubectl get nodes -l node_type=virtual
NAME         STATUS   ROLES   AGE   VERSION
10.0.10.192   Ready   <none>   100m   v1.34.1
10.0.10.251   Ready   <none>   94m   v1.34.1
10.0.10.77   Ready   <none>   100m   v1.34.1</none></none></none>

単純なnginxサンプル・アプリケーションを各ノード・タイプにデプロイするには、2つのマニフェスト・ファイル(仮想ノード用)を作成します (例. nginx-virtual-deploy.yaml):

apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-virtual-deploy
labels:
  app: nginx
  node_type: virtual
spec:
replicas: 3
selector:
  matchLabels:
    app: nginx
    node_type: virtual
template:
  metadata:
    labels:
      app: nginx
      node_type: virtual
  spec:
    nodeSelector:
      node_type: virtual
    tolerations:
      - key: "node.cloudprovider.kubernetes.io/uninitialized"
        value: "true"
        effect: "NoSchedule"
    containers:
      - name: nginx
        image: iad.ocir.io/okedev/oke-public-nginx:stable-alpine
        ports:
          - containerPort: 80

および管理対象ノード用に1つ (例. nginx-managed-deploy.yaml):

apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-managed-deploy
labels:
  app: nginx
  node_type: managed
spec:
replicas: 3
selector:
  matchLabels:
    app: nginx
    node_type: managed
template:
  metadata:
    labels:
      app: nginx
      node_type: managed
  spec:
    nodeSelector:
      node_type: managed
    containers:
      - name: nginx
        image: iad.ocir.io/okedev/oke-public-nginx:stable-alpine
        ports:
          - containerPort: 80

各マニフェストをデプロイ:

$ kubectl apply -f nginx-managed-deploy.yaml
deployment.apps/nginx-managed-deploy created
​
$ kubectl apply -f nginx-virtual-deploy.yaml
deployment.apps/nginx-virtual-deploy created

最後に、ワークロードがデプロイされた場所を確認します:

$ kubectl get pods -L node_type
NAME                                   READY   STATUS   RESTARTS   AGE   NODE_TYPE
nginx-managed-deploy-6f7c87669-4qhzc   1/1     Running   0         24m   managed
nginx-managed-deploy-6f7c87669-52vgv   1/1     Running   0         24m   managed
nginx-managed-deploy-6f7c87669-7qpl8   1/1     Running   0         24m   managed
nginx-virtual-deploy-b9577b6b8-8dsln   1/1     Running   0         24m   virtual
nginx-virtual-deploy-b9577b6b8-klphq   1/1     Running   0         24m   virtual
nginx-virtual-deploy-b9577b6b8-t6m7r   1/1     Running   0         24m   virtual

次のステップ

この機能強化により、OCIでコンテナ化されたアプリケーションを管理するための究極の柔軟性がもたらされると考えています。今すぐ始めて、サーバーレスとマネージドKubernetesの両方の長所を、1つの統合ソリューションで体験してください。詳細については: