マルチアーキテクチャKubernetesクラスタでのデプロイについて

Kubernetesは、単一のアーキテクチャとマルチアーキテクチャ・クラスタをサポートしています。単一アーキテクチャ・クラスタは、クラスタ内のノードが同じコンピュータ命令セットを使用するクラスタです。たとえば、単一アーキテクチャ・クラスタは、すべてのarm64ノードまたはすべてのamd64ノードで構成します。マルチアーキテクチャ・クラスタは、クラスタ内のノードが異なるコンピュータ命令セットである可能性があるKubernetesクラスタです。たとえば、マルチアーキテクチャ・クラスタは、amd64ノードとarm64ノードの両方で構成できます。

TimesTenオペレータは、単一および複数アーキテクチャのKubernetesクラスタで実行されます。TimesTenオペレータによって作成されたポッドは、TimesTenオペレータと同じノード・タイプのノードで実行されます。たとえば、TimesTenオペレータがamd64ノードで実行されている場合、このTimesTenオペレータによって作成されたポッドもamd64ノードで実行されます。

TimesTenオペレータをネームスペーススコープの環境で実行している場合、arm64ノードの1つのネームスペースにTimesTenオペレータをデプロイでき(arm64ノードでTimesTenをプロビジョニングおよび管理できます)、amd64ノードの別のネームスペースに2番目のTimesTenオペレータをデプロイできます(amd64ノードでTimesTenをプロビジョニングおよび管理できます)。ただし、クラスタスコープの環境でTimesTenオペレータを実行する場合は、同じノードタイプを使用する必要があります。ネームスペーススコープおよびクラスタスコープのオペレータの詳細は、「Kubernetesオペレータについて」および「TimesTenオペレータについて」を参照してください。

TimesTenオペレータのYAMLマニフェスト・ファイルとTimesTenオペレータのHelmチャートのaffinity設定は両方とも、オペレータとそれが管理するオブジェクトがarm64ノードとamd64ノードのどちらを使用するかを制御します。例として、TimesTenオペレータのYAMLマニフェスト・ファイルのaffinityセクションのスニペットを次に示します:

# An example affinity definition; this pod will only be assigned to a node
# running on amd64 (the default)
#
#     affinity:
#       nodeAffinity:
#         requiredDuringSchedulingIgnoredDuringExecution:
#           nodeSelectorTerms:
#             - matchExpressions:
#               - key: "kubernetes.io/arch"
#                 operator: In
#                 values: ["amd64"]
...
Kubernetesクラスタが単一のアーキテクチャで構成されている場合は、affinityセクションを変更する必要はありません。ただし、マルチアーキテクチャ・クラスタを使用している場合は、特定のアーキテクチャにTimesTenオペレータをデプロイするようにKubernetesに指示する必要があります。手順は次のとおりです:
  • .affinity.nodeAffinityセクションのコメントを解除します。

  • keyの値が"kubernetes-io/arch"である.affinity.nodeAffinity.nodeSelectorTermsセクションで、values"amd64"または"arm64"を指定します。

たとえば、TimesTenオペレータとそれが管理するオブジェクトをamd64ノードにデプロイするようにKubernetesに指示するには、次を実行します:
# An example affinity definition; this pod will only be assigned to a node
# running on amd64 (the default)
#
      affinity:
       nodeAffinity:
         requiredDuringSchedulingIgnoredDuringExecution:
           nodeSelectorTerms:
             - matchExpressions:
               - key: "kubernetes.io/arch"
                 operator: In
                 values: ["amd64"]
...
有効な値は次のとおりです。
  • "amd64": amd64ノードで実行するTimesTenオペレータに使用します。

  • "arm64": arm64ノードで実行するTimesTenオペレータに使用します。