Armベース・ノードでのアプリケーションの実行

Kubernetes Engine (OKE)を使用して作成されたクラスタ内のArmベースのワーカー・ノードでアプリケーションを実行する方法をご覧ください。

Armベースのワーカー・ノードでアプリケーションを実行するには、管理対象ノード・プールとArmベースのシェイプを選択します。シェイプによって、ノード・プール内の各ノードに割り当てるCPU数とメモリー量が決まります。Armベースのベア・メタル・シェイプと柔軟なVMシェイプを選択できます。これらのAmpere A1コンピュート・インスタンスは、Ampere Altraプロセッサに基づいています(Armベースのコンピュートを参照)。これらのシェイプのOCPU数、メモリー、ストレージおよびネットワーキングの詳細は、コンピュート・シェイプを参照してください。

新しいクラスタの作成時に、コンソール、APIおよびCLIを使用して、ノード・プールのArmベースのシェイプを指定できます。新しいノード・プールの作成時にArmベースのシェイプを指定することもできます。コンソール・ワークフローを使用したKubernetesクラスタの作成および更新済プロパティを使用したワーカー・ノードの作成のノード・プール構成ステップをそれぞれ参照してください。

使用可能な予約可能なArmベースのコアの数を表示するには、コンソールを使用します。ナビゲーション・メニューを開き、「ガバナンスと管理」を選択します。「テナント管理」で、「制限、割当ておよび使用状況」を選択します。

Armベースのシェイプは、他のシェイプと比較して、より優れたコスト・パフォーマンス、より優れたセキュリティ分離(各コアがシングルスレッドであるため)、より一貫したパフォーマンスを実現します。通常、開発者は、KubernetesクラスタでArmベースのワーカー・ノードを使用してアプリケーションを開発およびテストします。

Kubernetesエンジンで作成したクラスタにアプリケーションをデプロイする場合は、ポッド仕様で必要なコンピュート・リソースを指定する必要があります。アプリケーションをデプロイするために、kubeスケジューラによって、必要なリソースがあるノードが決定されます。クラスタにArmベースのシェイプを持つノード・プールと、他のシェイプ(AMD64シェイプなど)を持つノード・プールがある場合、ポッド仕様でnodeSelectorを使用して、アプリケーションがArmベースのワーカー・ノードで実行されるように指定できます。「Armベースのノードでのみ実行するポッドの定義」を参照してください。

Armベースのワーカー・ノードとArm以外のワーカー・ノードの両方にアプリケーションを同じクラスタにデプロイする場合は、Oracle Cloud Infrastructure RegistryなどのOpen Container Initiative準拠のレジストリに格納されているマルチアーキテクチャ・イメージ(マニフェスト・リストとも呼ばれる)を使用します(コンテナ・レジストリの概要を参照)。単一のソース・ツリーからマルチアーキテクチャ・イメージを構築し、x86アーキテクチャとArmアーキテクチャの両方のイメージを含む1つのイメージ・タグを使用します。Docker BuildxPodmanおよびBuildahを使用して、マルチアーキテクチャ・イメージを構築できます。

次の点に注意してください:

  • Kubernetesバージョン1.19.7以降を実行しているクラスタのノード・プールにArmベースのシェイプを指定できます。以前のバージョンのKubernetesを実行しているノード・プールにArmベースのシェイプを指定しないでください。
  • Armベースのシェイプでノード・プールを作成した後、非Armベースのシェイプを持つようにノード・プールを変更することはできません。同様に、Armベースではないシェイプのノード・プールをArmベースのシェイプに変更することはできません。
  • ノード・プールにArmベースのシェイプを指定する場合は、シェイプと互換性のあるイメージも指定します。コンピュート・シェイプを参照してください。

Armベースのノードでのみ実行するポッドの定義

クラスタにArmベースのシェイプを持つノード・プールと、他のシェイプ(AMD64シェイプなど)を持つノード・プールがある場合、ポッド仕様でnodeSelectorを使用して、アプリケーションがArmベースのワーカー・ノードでのみ実行されるように指定できます。たとえば、次の構成ファイルでは、クラスタ内の任意のArmベースのノードで実行するポッドを定義します。


apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    env: test
spec:
  containers:
  - name: nginx
    image: nginx
    imagePullPolicy: IfNotPresent
  nodeSelector:
    kubernetes.io/arch: arm64