2.4. 既知の問題
OpenShift Container クラスター内の
hostPathボリュームからマウントされたファイルまたはディレクトリーにアクセスすると、SELinux 拒否を受け取る場合があります。特権 Sandboxed Container は SELinux チェックを無効にしないため、特権 Sandboxed Container を実行している場合でも、このように拒否される可能性があります。ホストで SELinux ポリシーに従うことで、デフォルトでサンドボックス化されたワークロードからホストファイルシステムを完全に分離することが保証されます。これにより、
virtiofsdデーモンまたは QEMU の潜在的なセキュリティー上の欠陥に対する保護も強化されます。マウントされたファイルまたはディレクトリーにホスト上の特定の SELinux 要件がない場合は、代わりにローカル永続ボリュームを使用できます。ファイルは、コンテナーランタイムの SELinux ポリシーに従って、自動的に
container_file_tに再ラベル付けされます。ローカルボリュームを使用した永続ストレージ を参照してください。マウントされたファイルまたはディレクトリーがホスト上で特定の SELinux ラベルを持つことが予想される場合、自動再ラベル付けはオプションではありません。代わりに、ホストでカスタム SELinux ルールを設定して、
virtiofsdデーモンがこれらの特定のラベルにアクセスできるようにすることができます。(KATA-469)一部の OpenShift Sandboxed Containers Operator Pod は、コンテナーの CPU リソース制限を使用して、Pod で使用可能な CPU の数を増やします。これらの Pod は、要求されたよりも少ない CPU を受け取る可能性があります。コンテナー内で機能が利用可能な場合は、
oc rsh <pod>を使用して Pod にアクセスし、lscpuコマンドを実行することで、CPU リソースの問題を診断できます。lscpu
$ lscpuCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
CPU(s): 16 On-line CPU(s) list: 0-12,14,15 Off-line CPU(s) list: 13
CPU(s): 16 On-line CPU(s) list: 0-12,14,15 Off-line CPU(s) list: 13Copy to Clipboard Copied! Toggle word wrap Toggle overflow オフライン CPU のリストは、実行ごとに予期せず変更される可能性があります。
回避策として、CPU 制限を設定するのではなく、Pod アノテーションを使用して追加の CPU をリクエストできます。Pod アノテーションを使用する CPU リクエストは、プロセッサーの割り当て方法が異なるため、この問題の影響を受けません。CPU 制限を設定するのではなく、Pod のメタデータに次のアノテーションを追加する必要があります。
metadata: annotations: io.katacontainers.config.hypervisor.default_vcpus: "16"metadata: annotations: io.katacontainers.config.hypervisor.default_vcpus: "16"Copy to Clipboard Copied! Toggle word wrap Toggle overflow コンテナーのセキュリティーコンテキストで SELinux Multi-Category Security (MCS) ラベルを設定すると、Pod が起動せず、Pod ログに次のエラーが表示されます。
Error: CreateContainer failed: EACCES: Permission denied: unknown
Error: CreateContainer failed: EACCES: Permission denied: unknownCopy to Clipboard Copied! Toggle word wrap Toggle overflow ランタイムは、Sandboxed Containers の作成時にコンテナーのセキュリティーコンテキストにアクセスできません。これは、
virtiofsdが適切な SELinux ラベルで実行されず、コンテナーのホストファイルにアクセスできないことを意味します。その結果、MCS ラベルを利用してSandboxed Containers 内のファイルをコンテナーごとに分離できません。つまり、すべてのコンテナーがSandboxed Containers 内のすべてのファイルにアクセスできることになります。現在、この問題に対する回避策はありません。-
OpenShift Sandboxed Containers の FIPS コンプライアンスは、
kataランタイムクラスにのみ適用されます。新しいピア Pod ランタイムクラスkata-remote-ccはまだ完全にはサポートされておらず、FIPS コンプライアンスについてはテストされていません。(KATA-2166) -
--announce-submountsまたは--thread-pool-sizeのいずれかを含むio.katacontainers.config.hypervisor.virtio_fs_extra_argsアノテーションを持つ Pod は起動しません。これは、OpenShift Container Platform 4.13 および 4.14 上の OpenShift Sandboxed Containers Operator によって使用されるvirtiofsdコンポーネントの回帰です。OpenShift Container Platform 4.12 および 4.11 は影響を受けません。(KATA-2146) 一時メモリーボリュームの
sizeLimitオプションは、OpenShift Sandboxed Containers では機能しません。一時ボリュームサイズのデフォルトは、サンドボックスコンテナーに割り当てられたメモリーの 50% です。ボリュームを再マウントすることで、このボリュームのサイズを手動で変更できます。たとえば、サンドボックスコンテナーに割り当てられたメモリーが 6 GB で、一時ボリュームが/var/lib/containersにマウントされている場合は、次のコマンドを使用して、このボリュームのサイズを仮想マシンメモリーのデフォルトの 50% を超えて増やすことができます。。mount -o remount,size=4G /var/lib/containers
$ mount -o remount,size=4G /var/lib/containersCopy to Clipboard Copied! Toggle word wrap Toggle overflow io.katacontainers.config.hypervisor.default_vcpusアノテーションおよびio.katacontainers.config.hypervisor.default_memoryアノテーションは QEMU のセマンティクスに従いますが、ピア Pod には次の制限があります。io.katacontainers.config.hypervisor.default_memoryアノテーションの値を256未満に設定すると、次のエラーが発生します。Failed to create pod sandbox: rpc error: code = Unknown desc = CreateContainer failed: Memory specified in annotation io.katacontainers.config.hypervisor.default_memory is less than minimum required 256, please specify a larger value: unknown
Failed to create pod sandbox: rpc error: code = Unknown desc = CreateContainer failed: Memory specified in annotation io.katacontainers.config.hypervisor.default_memory is less than minimum required 256, please specify a larger value: unknownCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
io.katacontainers.config.hypervisor.default_memory: 256アノテーションおよびio.katacontainers.config.hypervisor.default_vcpus: 1アノテーションを使用する場合は、リストから最小のインスタンスが起動されます。 -
io.katacontainers.config.hypervisor.default_vcpus: 0アノテーションを使用する場合は、すべてのアノテーションが無視され、デフォルトのインスタンスが起動します。
代わりに、柔軟な Pod VM サイズには
io.katacontainers.config.hypervisor.machine_type: <instance type/instance size>アノテーションを使用することが推奨されます。(KATA-2575、KATA-2577、KATA-2578)OpenShift Sandboxed Containers Operator 1.4.1 からバージョン 1.5 への自動アップグレード中に、アップグレードが
pending状態でスタックします。サブスクリプションが自動更新に設定されていると、OpenShift Sandboxed Containers のアップグレードがインストールされます。ただし、
KataConfigCR (カスタムリソース) がインストールされている場合、CSV はpending状態のままになります。次のコマンドを実行して、
Subscriptionオブジェクトのステータスを確認できます。oc get sub osc-operator -n openshift-osc-operator -o yaml
$ oc get sub osc-operator -n openshift-osc-operator -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のエラーが、
Subscriptionオブジェクトのstatusセクションと、アップグレードのInstallPlanオブジェクトのstatusセクションに表示されます。message: 'error validating existing CRs against new CRD''s schema for "kataconfigs.kataconfiguration.openshift.io": error validating custom resource against new schema for KataConfig /example-kataconfig: [].status.runtimeClass: Invalid value: "string": status.runtimeClass in body must be of type array: "string"'message: 'error validating existing CRs against new CRD''s schema for "kataconfigs.kataconfiguration.openshift.io": error validating custom resource against new schema for KataConfig /example-kataconfig: [].status.runtimeClass: Invalid value: "string": status.runtimeClass in body must be of type array: "string"'Copy to Clipboard Copied! Toggle word wrap Toggle overflow このエラーが発生した場合は、OpenShift Sandboxed Containers Operator をアンインストールしてから再インストールする必要があります。
-
kataランタイムまたはkata-remoteランタイムで実行しているワークロード (Pod、デプロイメント、デーモンセット) をすべて削除します。これらのワークロードは、再インストール後に再作成する必要があります。ワークロードの削除の詳細は、CLI を使用した OpenShift Sandboxed Containers Pod の削除 を参照してください。 KataConfigCR を削除します。CLI を使用した KataConfig カスタムリソースの削除 を参照してください。重要ワークロードが実行中の場合は、
KataConfigCR を削除しないでください。次のコマンドを使用して、
KataConfigCR の削除ステータスを確認できます。oc get kataconfig -n openshift-osc-operator
$ oc get kataconfig -n openshift-osc-operatorCopy to Clipboard Copied! Toggle word wrap Toggle overflow - Operator をアンインストールします。CLI を使用したSandboxed Containers Operator のインストール を参照してください。
OpenShift Sandboxed Containers Operator を再インストールします。CLI を使用したSandboxed Containers Operator のインストール を参照してください。
OpenShift Sandboxed Containers Operator の再インストールはバージョン 1.5.0 をインストールします。
-
KataConfigCR を作成します。CLI を使用した KataConfig カスタムリソースの作成 を参照してください。 - ワークロードを再作成します。CLI を使用した Sandboxed Containers へのワークロードのデプロイ を参照してください。
注記サブスクリプションを手動更新に設定している場合は、OpenShift Sandboxed Containers Operator 1.5.1 が利用可能になるまでアップグレードを承認しないでください。
-