マルチアーキテクチャ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"]
...affinityセクションを変更する必要はありません。ただし、マルチアーキテクチャ・クラスタを使用している場合は、特定のアーキテクチャにTimesTenオペレータをデプロイするようにKubernetesに指示する必要があります。手順は次のとおりです:
-
.affinity.nodeAffinityセクションのコメントを解除します。 -
keyの値が"kubernetes-io/arch"である.affinity.nodeAffinity.nodeSelectorTermsセクションで、valuesに"amd64"または"arm64"を指定します。
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オペレータに使用します。