第5章 IBM Z および IBM LinuxONE へのデプロイ
OpenShift sandboxed containers または Confidential Containers を IBM Z® および IBM® LinuxONE にデプロイできます。
IBM Z® および IBM® LinuxONE 上の OpenShift sandboxed containers は、テクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
クラスターの要件
- OpenShift sandboxed containers Operator をインストールするクラスターに Red Hat OpenShift Container Platform 4.14 以降をインストールしている。
- クラスターには少なくとも 1 つのワーカーノードがある。
5.1. ピア Pod のリソース要件
クラスターに十分なリソースがあることを確認する。
ピア Pod 仮想マシン (VM) には、次の 2 つの場所にリソースが必要です。
-
ワーカーノード。ワーカーノードは、メタデータ、Kata shim リソース (
containerd-shim-kata-v2
)、リモートハイパーバイザーリソース (cloud-api-adaptor
)、およびワーカーノードとピア Pod VM 間のトンネル設定を保存します。 - libvirt 仮想マシンインスタンス。これは、LPAR (KVM ホスト) で実行されている実際のピア Pod 仮想マシンです。
Kubernetes ワーカーノードで使用される CPU およびメモリーリソースは、ピア Pod の作成に使用される RuntimeClass (kata-remote
) 定義に含まれる Pod オーバーヘッド によって処理されます。
クラウド内で実行されているピア Pod VM の合計数は、Kubernetes ノード拡張リソースとして定義されます。この制限はノードごとであり、peerpodConfig
カスタムリソース (CR) の limit
属性によって設定されます。
peerpodconfig-openshift
という名前の peerpodConfig
CR は、kataConfig
CR を作成してピア Pod を有効にするときに作成され、openshift-sandboxed-containers-operator
namespace に配置されます。
次の peerpodConfig
CR の例は、デフォルトの spec
値を示しています。
apiVersion: confidentialcontainers.org/v1alpha1
kind: PeerPodConfig
metadata:
name: peerpodconfig-openshift
namespace: openshift-sandboxed-containers-operator
spec:
cloudSecretName: peer-pods-secret
configMapName: peer-pods-cm
limit: "10" 1
nodeSelector:
node-role.kubernetes.io/kata-oc: ""
- 1
- デフォルトの制限は、ノードごとに 10 VM です。
拡張リソースの名前は kata.peerpods.io/vm
で、Kubernetes スケジューラーが容量の追跡とアカウンティングを処理できるようにします。
OpenShift Sandboxed Containers Operator のインストール後に、環境の要件に基づいてノードごとの制限を編集できます。
mutating Webhook により、拡張リソース kata.peerpods.io/vm
が Pod 仕様に追加されます。また、リソース固有のエントリーが存在する場合は、Pod 仕様から削除されます。こうすることで、Kubernetes スケジューラーがこれらの拡張リソースを考慮できるようになり、リソースが利用可能な場合にのみピア Pod がスケジュールされるようになります。
mutating Webhook は、次のように Kubernetes Pod を変更します。
-
mutating Webhook は、
TARGET_RUNTIME_CLASS
環境変数で指定されたRuntimeClassName
の想定値であるか、Pod をチェックします。Pod 仕様の値がTARGET_RUNTIME_CLASS
の値と一致しない場合、Webhook は Pod を変更せずに終了します。 RuntimeClassName
の値が一致する場合、Webhook は Pod 仕様に次の変更を加えます。-
この Webhook は、Pod 内のすべてのコンテナーおよび初期化コンテナーの
resources
フィールドからすべてのリソース仕様を削除します。 -
Webhook は、Pod 内の最初のコンテナーのリソースフィールドを変更して、拡張リソース (
kata.peerpods.io/vm
) を仕様に追加します。拡張リソースkata.peerpods.io/vm
は Kubernetes スケジューラーによってアカウンティング目的で使用されます。
-
この Webhook は、Pod 内のすべてのコンテナーおよび初期化コンテナーの
mutating Webhook は、OpenShift Container Platform の特定のシステム namespace が変更されないように除外します。これらのシステム namespace でピア Pod が作成された場合、Pod の仕様に拡張リソースが含まれていない限り、Kubernetes 拡張リソースを使用したリソースアカウンティングは機能しません。
ベストプラクティスとして、特定の namespace でのみピア Pod の作成を許可するクラスター全体のポリシーを定義します。