2.3. コマンドラインを使用したワークロードの展開
コマンドラインを使用して、OpenShift Sandboxed Containers のワークロードをデプロイできます。
2.3.1. オプション: Local Storage Operator を使用したローカルブロックボリュームのプロビジョニング リンクのコピーリンクがクリップボードにコピーされました!
OpenShift サンドボックスコンテナーのローカルブロックボリュームは、Local Storage Operator (LSO) を使用してプロビジョニングできます。ローカルボリュームプロビジョナーは、定義されたリソースで指定されたパスにあるブロックボリュームデバイスを検索します。
前提条件
- ローカルストレージ Operator がインストールされていること。
以下の条件を満たすローカルディスクがある。
- ノードに接続されている。
- マウントされていない。
- パーティションが含まれていない。
手順
ローカルボリュームリソースを作成します。このリソースは、ノードおよびローカルボリュームへのパスを定義する必要があります。
注記同じデバイスに別のストレージクラス名を使用しないでください。これを行うと、複数の永続ボリューム (PV) が作成されます。
例: ブロック
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- ローカルストレージ Operator がインストールされている namespace。
- 2
- オプション: ローカルストレージボリュームが割り当てられているノードの一覧が含まれるノードセレクター。以下の例では、
oc get nodeから取得したノードホスト名を使用します。値が定義されない場合、ローカルストレージ Operator は利用可能なすべてのノードで一致するディスクの検索を試行します。 - 3
- 永続ボリュームオブジェクトの作成時に使用するストレージクラスの名前。
- 4
- この設定は、パーティションテーブルの署名 (マジックストリング) を削除してディスクを Local Storage Operator プロビジョニングに使用できるようにする
winefsを呼び出すかどうかを定義します。署名以外のデータは消去されません。デフォルトは "false" です (wipefsは呼び出されません)。再利用する必要がある以前のデータをディスク上に残す場合、forceWipeDevicesAndDestroyAllDataを "true" に設定すると便利です。このようなシナリオでは、このフィールドを true に設定すると、管理者はディスクを手動で消去する必要がありません。 - 5
- 選択するローカルストレージデバイスの一覧を含むパスです。ブロックデバイスにサンドボックス化されたコンテナーノードをデプロイする場合は、このパスを使用する必要があります。
- 6
- この値を、
LocalVolumeリソースby-idへの実際のローカルディスクのファイルパスに置き換えます (例:/dev/disk/by-id/wwn)。プロビジョナーが正常にデプロイされると、これらのローカルディスク用に PV が作成されます。
OpenShift Container Platform クラスターにローカルボリュームリソースを作成します。作成したばかりのファイルを指定します。
oc create -f <local-volume>.yaml
$ oc create -f <local-volume>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow プロビジョナーが作成され、対応するデーモンセットが作成されていることを確認します。
oc get all -n openshift-local-storage
$ oc get all -n openshift-local-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow デーモンセットプロセスの
desired数とcurrent数をメモします。desired数が0の場合、これはラベルセレクターが無効であることを示します。永続ボリュームが作成されていることを確認します。
oc get pv
$ oc get pvCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE local-pv-1cec77cf 100Gi RWO Delete Available local-sc 88m local-pv-2ef7cd2a 100Gi RWO Delete Available local-sc 82m local-pv-3fa1c73 100Gi RWO Delete Available local-sc 48m
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE local-pv-1cec77cf 100Gi RWO Delete Available local-sc 88m local-pv-2ef7cd2a 100Gi RWO Delete Available local-sc 82m local-pv-3fa1c73 100Gi RWO Delete Available local-sc 48mCopy to Clipboard Copied! Toggle word wrap Toggle overflow
LocalVolume オブジェクトを編集しても、破壊的な操作になる可能性があるため、既存の永続ボリュームは変更されません。
2.3.2. オプション: ブロックデバイスにノードのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
OpenShift サンドボックスコンテナー用にローカルブロックボリュームをプロビジョニングした場合は、定義されたボリュームリソースで指定されたパスにある任意のブロックデバイスにノードをデプロイすることを選択できます。
前提条件
- Local Storage Operator を使用してブロックデバイスをプロビジョニングしている
手順
- ブロックデバイスを使用してデプロイする各ノードに対して、次のコマンドを実行します。
oc debug node/worker-0 -- chcon -vt container_file_t /host/path/to/device
$ oc debug node/worker-0 -- chcon -vt container_file_t /host/path/to/device
+ /path/to/device は、ローカルストレージリソースを作成するときに定義したパスと同じである必要があります。
+ 出力例
system_u:object_r:container_file_t:s0 /host/path/to/device
system_u:object_r:container_file_t:s0 /host/path/to/device
2.3.3. KataConfig カスタムリソースの作成 リンクのコピーリンクがクリップボードにコピーされました!
ワーカーノードに kata をランタイムクラスとしてインストールするには、KataConfig カスタムリソース (CR) を作成する必要があります。
KataConfig CR を作成すると、OpenShift Sandboxed Containers Operator がトリガーされ、以下が実行されます。
-
QEMU や
kata-containersなどの必要な RHCOS 拡張機能を RHCOS ノードにインストールします。 - CRI-O ランタイムが正しいランタイムハンドラーで設定されていることを確認してください。
-
デフォルト設定で
kataという名前のRuntimeClassCR を作成します。これにより、ユーザーは、RuntimeClassNameフィールドで CR を参照することにより、kataをランタイムとして使用するようにワークロードを設定できます。この CR は、ランタイムのリソースオーバーヘッドも指定します。
OpenShift sandboxed containers は、プライマリーランタイムとしてではなく クラスター上のセカンダリーのオプション ランタイムとして kata をインストールします。
KataConfig CR を作成すると、ワーカーノードが自動的に再起動します。再起動には 10 分から 60 分以上かかる場合があります。再起動時間を妨げる要因は次のとおりです。
- より多くのワーカーノードを持つ大規模な OpenShift Container Platform デプロイメント。
- BIOS および診断ユーティリティーが有効である。
- SSD ではなくハードディスクドライブにデプロイしている。
- 仮想ノードではなく、ベアメタルなどの物理ノードにデプロイしている。
- CPU とネットワークが遅い。
前提条件
-
cluster-adminロールを持つユーザーとしてクラスターにアクセスできる。 - オプション: ノードの適格性チェックを有効にする場合は、Node Feature Discovery Operator をインストールしておきます。
手順
次の例に従って
cluster-kataconfig.yamlマニフェストファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- オプション: ノード適格性チェックを実行するには、`checkNodeEligibility` を
trueに設定します。
オプション: 選択したノードに
kataをインストールするには、次の例に従ってノードラベルを指定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 選択したノードのラベルを指定します。
KataConfigCR を作成します。oc create -f cluster-kataconfig.yaml
$ oc create -f cluster-kataconfig.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 新しい
KataConfigCR が作成され、ワーカーノードにランタイムクラスとしてkataがインストールされます。kataのインストールが完了し、ワーカーノードが再起動するのを待ってから、インストールを検証します。
検証
次のコマンドを実行して、インストールの進行状況を監視します。
watch "oc describe kataconfig | sed -n /^Status:/,/^Events/p"
$ watch "oc describe kataconfig | sed -n /^Status:/,/^Events/p"Copy to Clipboard Copied! Toggle word wrap Toggle overflow kataNodesの下にあるすべてのワーカーのステータスがinstalledで、理由を指定せずにInProgressの条件がFalseの場合、kataはクラスターにインストールされます。
詳細は、KataConfig ステータスメッセージ を参照してください。
2.3.4. オプション:Pod オーバーヘッドの変更 リンクのコピーリンクがクリップボードにコピーされました!
Pod のオーバーヘッド では、ノード上の Pod が使用するシステムリソースの量を記述します。RuntimeClass カスタムリソースの spec.overhead フィールドを変更して、Pod のオーバーヘッドを変更できます。たとえば、コンテナーに対する設定が QEMU プロセスおよびゲストカーネルデータでメモリー 350Mi 以上を消費する場合に、RuntimeClass のオーバーヘッドをニーズに合わせて変更できます。
ゲストで種類にかかわらず、ファイルシステム I/O を実行すると、ファイルバッファーがゲストカーネルに割り当てられます。ファイルバッファーは、virtiofsd プロセスだけでなく、ホスト上の QEMU プロセスでもマッピングされます。
たとえば、ゲストでファイルバッファーキャッシュ 300Mi を使用すると、QEMU と virtiofsd の両方が、追加で 300Mi を使用するように見えます。ただし、3 つのケースすべてで同じメモリーが使用されています。したがって、合計メモリー使用量は 3 つの異なる場所にマップされた 300Mi のみです。これは、メモリー使用量メトリックの報告時に適切に考慮されます。
デフォルト値は Red Hat でサポートされています。デフォルトのオーバーヘッド値の変更はサポートされておらず、値を変更すると技術的な問題が発生する可能性があります。
手順
次のコマンドを実行して、
RuntimeClassオブジェクトを取得します。oc describe runtimeclass kata
$ oc describe runtimeclass kataCopy to Clipboard Copied! Toggle word wrap Toggle overflow overhead.podFixed.memoryおよびcpuの値を更新し、RuntimeClass.yamlとして保存します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.3.5. ワークロードオブジェクトの設定 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift sandboxed containers ワークロードをデプロイするには、次の Pod テンプレートオブジェクトのランタイムクラスとして kata を設定します。
-
Podオブジェクト -
ReplicaSetオブジェクト -
ReplicationControllerオブジェクト -
StatefulSetオブジェクト -
Deploymentオブジェクト -
DeploymentConfigオブジェクト
ワークロードを openshift-sandboxed-containers-operator namespace にデプロイしないでください。これらのリソース専用の namespace を作成します。
前提条件
- プロバイダーのシークレットオブジェクトを作成している。
- プロバイダーの config map を作成している。
-
KataConfigカスタムリソース (CR) を作成している。
手順
次の例のように、
spec.runtimeClassName: kataを各 Pod テンプレート化されたワークロードオブジェクトのマニフェストに追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow OpenShift Container Platform はワークロードオブジェクトを作成し、スケジュールを開始します。
検証
-
Pod テンプレートオブジェクトの
spec.runtimeClassNameフィールドを検査します。値がkataの場合、ワークロードはピア Pod を使用して OpenShift sandboxed containers 上で実行されています。