第4章 IBM へのワークロードのデプロイ
OpenShift Sandboxed Containers のワークロードを IBM Z® および IBM® LinuxONE にデプロイできます。
IBM Z® および IBM® LinuxONE への OpenShift サンドボックスコンテナーワークロードのデプロイは、テクノロジープレビュー機能としてのみ提供されています。テクノロジープレビュー機能は、Red Hat 製品サポートのサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではない場合があります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
クラスターの前提条件
- Red Hat OpenShift Container Platform 4.14 以降がインストールされている。
- クラスターには 3 つのコントロールノードと 2 つのワーカーノードがある。
デプロイメントフロー
このドキュメントは IBM Z® のみを対象としていますが、すべての手順は IBM® LinuxONE にも適用されます。
次の手順を実行して、OpenShift Sandboxed Containers のワークロードをデプロイします。
- KVM ホストで libvirt ボリュームを設定します。
- KVM ゲストイメージを作成し、libvirt ボリュームにアップロードします。
- ピア Pod 仮想マシンイメージを作成し、libvirt ボリュームにアップロードします。
- libvirt プロバイダーのシークレットを作成します。
- libvirt プロバイダーの config map を作成します。
- KVM ホストの SSH キーシークレットを作成します。
-
KataConfigCR を作成します。 - オプション: ノードごとのピア Pod 仮想マシン制限を変更します。
-
kata-remoteランタイムクラスを使用するようにワークロードオブジェクトを設定します。
- クラスターノードとピア Pod は、同じ IBM Z® KVM ホスト論理パーティション (LPAR) 内に存在する必要があります。
- クラスターノードとピア Pod は同じサブネットに接続されている必要があります。
4.1. 環境の準備 リンクのコピーリンクがクリップボードにコピーされました!
環境を準備するには、以下の手順を実行します。
- クラスターに十分なリソースがあることを確認します。
- OpenShift Sandboxed Containers Operator を再インストールします。
4.1.1. リソース要件 リンクのコピーリンクがクリップボードにコピーされました!
ピア Pod 仮想マシン (VM) には、次の 2 つの場所にリソースが必要です。
-
ワーカーノード。ワーカーノードは、メタデータ、Kata shim リソース (
containerd-shim-kata-v2)、リモートハイパーバイザーリソース (cloud-api-adaptor)、およびワーカーノードとピア Pod VM 間のトンネル設定を保存します。 - クラウドインスタンス。これは、クラウド内で実行されている実際のピア Pod VM です。
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 値を示しています。
- 1
- デフォルトの制限は、ノードごとに 10 VM です。
拡張リソースの名前は kata.peerpods.io/vm で、Kubernetes スケジューラーが容量の追跡とアカウンティングを処理できるようにします。
ご使用の環境の要件に基づいて、ノードごとの制限を編集できます。詳細は、「ピア Pod のノードごとの VM 制限の変更」を参照してください。
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 の作成を許可するクラスター全体のポリシーを定義します。
4.1.2. OpenShift Sandboxed Containers Operator のインストール リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform Web コンソールまたはコマンドラインインターフェイス (CLI) を使用して、OpenShift sandboxed containers Operator をインストールできます。
4.1.2.1. Web コンソールを使用した Operator のインストール リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenShift Container Platform Web コンソールを使用して、OpenShift sandboxed containers Operator をインストールできます。
前提条件
-
cluster-adminロールを持つユーザーとしてクラスターにアクセスできる。
手順
-
OpenShift Container Platform Web コンソールで、Operators
OperatorHub ページに移動します。 -
Filter by keyword フィールドに
OpenShift sandboxed containersと入力します。 - OpenShift sandboxed containers Operator タイルを選択し、Install をクリックします。
- Install Operator ページで、利用可能な Update Channel オプションの一覧から stable を選択します。
Installed Namespace で Operator recommend Namespace が選択されていることを確認します。これにより、Operator が必須の
openshift-sandboxed-containers-operatornamespace にインストールされます。この namespace がまだ存在しない場合は、自動的に作成されます。注記OpenShift Sandboxed Containers Operator を
openshift-sandboxed-containers-operator以外の namespace にインストールしようとすると、インストールに失敗します。- Approval Strategy で Automatic が選択されていることを確認します。Automatic がデフォルト値であり、新しい z-stream リリースが利用可能になると、OpenShift Sandboxed Containers への自動更新が有効になります。
- Install をクリックします。
これで、OpenShift Sandboxed Containers Operator がクラスターにインストールされました。
検証
-
Operators
Installed Operators に移動します。 - OpenShift Sandboxed Containers Operator が表示されることを確認します。
4.1.2.2. CLI を使用した Operator のインストール リンクのコピーリンクがクリップボードにコピーされました!
CLI を使用して、OpenShift Sandboxed Containers Operator をインストールできます。
前提条件
-
OpenShift CLI (
oc) がインストールされている。 -
cluster-adminロールを持つユーザーとしてクラスターにアクセスできる。
手順
Namespace.yamlマニフェストファイルを作成します。apiVersion: v1 kind: Namespace metadata: name: openshift-sandboxed-containers-operator
apiVersion: v1 kind: Namespace metadata: name: openshift-sandboxed-containers-operatorCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して namespace を作成します。
oc create -f Namespace.yaml
$ oc create -f Namespace.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow OperatorGroup.yamlマニフェストファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して Operator グループを作成します。
oc create -f OperatorGroup.yaml
$ oc create -f OperatorGroup.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Subscription.yamlマニフェストファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、サブスクリプションを作成します。
oc create -f Subscription.yaml
$ oc create -f Subscription.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
これで、OpenShift Sandboxed Containers Operator がクラスターにインストールされました。
検証
次のコマンドを実行して、Operator が正常にインストールされていることを確認します。
oc get csv -n openshift-sandboxed-containers-operator
$ oc get csv -n openshift-sandboxed-containers-operatorCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME DISPLAY VERSION REPLACES PHASE openshift-sandboxed-containers openshift-sandboxed-containers-operator 1.6.0 1.5.3 Succeeded
NAME DISPLAY VERSION REPLACES PHASE openshift-sandboxed-containers openshift-sandboxed-containers-operator 1.6.0 1.5.3 SucceededCopy to Clipboard Copied! Toggle word wrap Toggle overflow