This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.1.4. 已知问题
如果使用 OpenShift 沙盒容器,您可能会在访问 OpenShift Container Platform 集群中从
hostPath卷挂载的文件或目录时收到 SELinux 拒绝。即使运行特权沙盒容器,这些拒绝也会发生,因为特权沙盒容器不会禁用 SELinux 检查。在默认情况下,主机上的 SELinux 策略会保证主机文件系统完全与沙盒工作负载隔离,并提供对
virtiofsd守护进程或 QEMU 中潜在的安全漏洞的更强的保护。如果挂载的文件或目录在主机上没有特定的 SELinux 要求,您可以使用本地持久性卷作为替代方案。文件会自动重新标记为
container_file_t,遵循 SELinux 容器运行时。如需更多信息,请参阅使用本地卷的持久性存储。挂载文件或目录时,自动重新标记不是选项,则主机上应该具有特定的 SELinux 标签。相反,您可以在主机上设置自定义 SELinux 规则,以允许
virtiofsd守护进程访问这些特定标签。(BZ#1904609)您可能会遇到 Machine Config Operator (MCO) pod 变为
CrashLoopBackOff状态的问题,pod 的openshift.io/scc注解会显示sandboxed-containers-operator-scc而不是默认的hostmount-anyuid值。如果发生了这种情况,将
sandboxed-containers-operator-sccSCC 中的seLinuxOptions策略临时改为不太严格的RunAsAny,以便准入进程会首选hostmount-anyuidSCC 而不是它。运行以下命令来更改
seLinuxOptions策略:oc patch scc sandboxed-containers-operator-scc --type=merge --patch '{"seLinuxContext":{"type": "RunAsAny"}}'$ oc patch scc sandboxed-containers-operator-scc --type=merge --patch '{"seLinuxContext":{"type": "RunAsAny"}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令重启 MCO pod:
oc scale deployments/machine-config-operator -n openshift-machine-config-operator --replicas=0
$ oc scale deployments/machine-config-operator -n openshift-machine-config-operator --replicas=0Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc scale deployments/machine-config-operator -n openshift-machine-config-operator --replicas=1
$ oc scale deployments/machine-config-operator -n openshift-machine-config-operator --replicas=1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,将
sandboxed-containers-operator-scc的seLinuxOptions策略恢复到其原始MustRunAs值:oc patch scc sandboxed-containers-operator-scc --type=merge --patch '{"seLinuxContext":{"type": "MustRunAs"}}'$ oc patch scc sandboxed-containers-operator-scc --type=merge --patch '{"seLinuxContext":{"type": "MustRunAs"}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,验证
hostmount-anyuidSCC 是否已应用到 MCO pod:oc get pods -n openshift-machine-config-operator -l k8s-app=machine-config-operator -o yaml | grep scc
$ oc get pods -n openshift-machine-config-operator -l k8s-app=machine-config-operator -o yaml | grep scc openshift.io/scc: hostmount-anyuidCopy to Clipboard Copied! Toggle word wrap Toggle overflow
使用容器 CPU 资源限值的 OpenShift 沙盒容器 Operator pod 来增加 pod 可用的 CPU 数量可能比请求的 CPU 少。如果功能在容器中可用,您可以使用
oc rsh <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 列表可能会更改为以无法预计的方式运行。
作为临时解决方案,您可以使用 pod 注解来请求额外 CPU 而不是设置 CPU 限值。分配处理器的方法不同,由 pod 注解请求的 CPU 不受此问题的影响。以下
注解必须添加到 pod 的元数据中,而不是设置 CPU 限制: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 运行时安装的进度显示在
kataConfigCR 的status部分中。但是,如果所有以下条件都满足,则不会显示进度:-
集群有一个没有成员的机器配置池
worker(machinecount=0)。 -
没有指定
kataConfigPoolSelector来选择要安装的节点。
在这种情况下,安装会在 master 节点上启动,因为 Operator 假设节点具有 master 和 worker 角色。
kataConfigCR 的status部分在安装过程中不会更新。(KATA-1017)-
集群有一个没有成员的机器配置池
-
在创建
KataConfigCR 并在openshift-sandboxed-containers-operator命名空间中观察 pod 状态时,会显示大量监控 pod 的重启。monitor pod 使用作为sandboxed-containers扩展安装的一部分安装的特定 SELinux 策略。监控 pod 会立即创建,但 SELinux 策略还不可用,这会导致 pod 创建错误,然后 pod 重启。当扩展安装成功时,SELinux 策略可用,监控 pod 过渡到Running状态。这不会影响任何 OpenShift 沙盒容器 Operator 功能。(KATA-1338)