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

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

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

TimesTenオペレータはネームスペース・スコープ指定であるため、arm64ノードの1つのネームスペースにTimesTenオペレータをデプロイでき(arm64ノードでTimesTenをプロビジョニングおよび管理できます)、amd64ノードの別のネームスペースに2番目のTimesTenオペレータをデプロイできます(amd64ノードでTimesTenをプロビジョニングおよび管理できます)。

また、次の考慮事項があります:
  • arm64ノードで実行されるTimesTenオペレータは、TimesTenClassicオブジェクトをサポートしますが、TimesTenScaleoutオブジェクトはサポートしません。

  • amd64ノードで実行されるTimesTenオペレータは、TimesTenClassicオブジェクトおよびTimesTenScaleoutオブジェクトをサポートします。

operator.yaml YAMLマニフェスト・ファイルとttoperator Helmチャートの両方のaffinity設定は、オペレータとそれが管理するオブジェクトがarm64ノードとamd64ノードのどちらを使用するかを制御します。たとえば、operator.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オペレータとそれが管理するオブジェクトをarm64ノードにデプロイするように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: ["arm64"]
...
valuesデータ項目の有効な値は次のとおりです:
  • "amd64": amd64ノードで実行するTimesTenオペレータに使用します。

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