1.4. 既知の問題
OpenShift Sandboxed Containers を使用している場合は、Red Hat OpenShift クラスター内の
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 のメタデータに次の
annotationを追加する必要があります。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 ランタイムインストールの進行状況は、
kataConfigカスタムリソース (CR) のstatusセクションに表示されます。ただし、次の条件がすべて当てはまる場合、進行状況は表示されません。-
ワーカーノードが定義されていません。
oc get machineconfigpoolを実行して、マシン設定プール内のワーカーノードの数を確認できます。 -
インストールするノードを選択するための
kataConfigPoolSelectorが指定されていません。
この場合、Operator はノードがコントロールプレーンとワーカーの両方のロールを持つコンバージドクラスターであると想定するため、コントロールプレーンノードでインストールが開始されます。
kataConfigCR のstatusセクションは、インストール中に更新されません。(KATA-1017)-
ワーカーノードが定義されていません。
-
Web コンソールの KataConfig タブで、YAML view で Create KataConfig をクリックすると、
KataConfigYAML にspecフィールドがありません。Form view に切り替えてから YAML view に戻ると、この問題が修正され、完全な YAML が表示されます。(KATA-1372) -
Web コンソールの KataConfig タブに、
KataConfigCR がすでに存在するかどうかにかかわらず、404: Not foundエラーメッセージが表示されます。既存のKataConfigCR にアクセスするには、Home > Search に移動します。Resources リストから、KataConfig を選択します。(KATA-1605) -
KataConfigCR のインストール中に、最初のノードが再起動する前にKataConfigCR の削除が開始されると、ノードのステータスが正しくなくなります。これが発生すると、Operator はKataConfigCR の削除とインストールを同時に試行する状態でスタックします。想定される動作として、インストールが停止し、KataConfigCR が削除されます。(KATA-1851) コンテナーのセキュリティーコンテキストで SELinux Multi-Category Security (MCS) ラベルを設定すると、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 内のすべてのファイルにアクセスできることになります。現在、この問題に対する回避策はありません。Sandboxed Containers ワークロードを停止すると、次の QEMU エラーメッセージがワーカーノードシステムジャーナルに記録されます。
qemu-kvm: Failed to write msg. qemu-kvm: Failed to set msg fds. qemu-kvm: vhost VQ 0 ring restore failed qqemu-kvm: vhost_set_vring_call failed
qemu-kvm: Failed to write msg. qemu-kvm: Failed to set msg fds. qemu-kvm: vhost VQ 0 ring restore failed qqemu-kvm: vhost_set_vring_call failedCopy to Clipboard Copied! Toggle word wrap Toggle overflow これらのエラーは無害なので無視してかまいません。
システムジャーナルログにアクセスする方法の詳細は、Red Hat サポートの OpenShift Sandboxed Containers データの収集 を参照してください。
Web コンソールを使用して OpenShift Sandboxed Containers Operator をインストールした場合は、Install をクリックした後に UI に間違った Operator バージョンが表示されることがあります。
バージョンが正しくない場合は、インストールウィンドウに灰色のテキストで次のように表示されます。
<Version number> provided by Red Hat.
正しい Operator をインストールします。Operators
Installed Operators に移動すると、OpenShift Sandboxed Containers Operator の下に正しいバージョンがリストされていることがわかります。 OpenShift Sandboxed Containers でピア Pod を使用する場合は、
KataConfigCR を作成し、enablePeerPodsフィールドをtrueに設定すると、kata-remote-ccランタイムクラスが作成されます。結果として、KataConfigCR にkataランタイムクラスに加えて、kata-remote-ccランタイムクラスが表示され、技術的には、標準の Kata Pod とピア Pod Kata Pod の両方を同じクラスター上で実行できるはずです。クラスター管理者として
KataConfigCR を調べると、Status.runtimeClassフィールドにkataのみが表示されます。ランタイムクラスkata-remote-ccが表示されません。現在、この問題に対する回避策はありません。-
OpenShift Sandboxed Containers の FIPS コンプライアンスは、
kataランタイムクラスにのみ適用されます。新しいピア Pod ランタイムクラスkata-remote-ccはまだ完全にはサポートされておらず、FIPS コンプライアンスについてはテストされていません。(KATA-2166)