×

OpenShift Dedicated 应用程序的基本单元称为容器Linux 容器技术是隔离运行进程的轻量级机制,以便它们仅限于与其指定资源交互。

许多应用程序实例可以在单个主机上的容器中运行,而不会看到彼此的进程、文件、网络等。通常,每个容器提供单一服务(通常称为“微服务”),例如 Web 服务器或数据库,尽管容器可用于任意工作负载。

多年来,Linux 内核一直在整合容器技术的功能。OpenShift Dedicated 和 Kubernetes 增加了在多主机安装中编排容器的能力。

关于容器和 RHEL 内核内存

由于 Red Hat Enterprise Linux (RHEL) 的行为,在 CPU 使用率高的节点上的容器似乎消耗的内存比预期更多。更高的内存消耗可能是由 RHEL 内核中的kmem_cache引起的。RHEL 内核为每个 cgroup 创建一个kmem_cache。为了提高性能,kmem_cache包含一个cpu_cache和任何 NUMA 节点的节点缓存。这些缓存都会消耗内核内存。

存储在这些缓存中的内存量与系统使用的 CPU 数量成正比。因此,更高的 CPU 数量会导致这些缓存中保留的内核内存量更大。这些缓存中较大的内核内存量可能导致 OpenShift Dedicated 容器超过配置的内存限制,从而导致容器被终止。

为了避免由于内核内存问题而丢失容器,请确保容器请求足够的内存。您可以使用以下公式来估计kmem_cache消耗的内存量,其中nproc是由nproc命令报告的可用处理单元的数量。容器请求的下限应为此值加上容器内存需求。

$(nproc) X 1/2 MiB

关于容器引擎和容器运行时

容器引擎是一段处理用户请求(包括命令行选项和镜像拉取)的软件。容器引擎使用容器运行时(也称为底层容器运行时)来运行和管理部署和操作容器所需的组件。您可能不需要与容器引擎或容器运行时交互。

OpenShift Dedicated 文档使用术语容器运行时来指代底层容器运行时。其他文档可能会将容器引擎称为容器运行时。

OpenShift Dedicated 使用 CRI-O 作为容器引擎,使用 runC 或 crun 作为容器运行时。默认容器运行时是 runC。