第 3 章 部署 OpenShift 沙盒容器工作负载


您可以使用 Web 控制台或 OpenShift CLI(oc)安装 OpenShift 沙盒容器 Operator。安装 OpenShift 沙盒容器 Operator 之前,您必须准备 OpenShift Container Platform 集群。

3.1. 为 OpenShift 沙盒容器准备集群

在安装 OpenShift 沙盒容器前,请确保 OpenShift Container Platform 集群满足以下要求:

  • 集群必须使用 Red Hat Enterprise Linux CoreOS(RHCOS)worker 在裸机基础架构上安装。您的集群必须使用安装程序置备的基础架构。

    重要
    • OpenShift 沙盒容器仅支持 RHCOS worker 节点。不支持 RHEL 7 或 RHEL 8 节点。
    • 不支持嵌套虚拟化。

3.1.1. OpenShift 沙盒容器的其他资源要求

OpenShift 沙盒容器是一种产品,它能够在沙盒运行时(如 Kata Containers)中运行工作负载到 OpenShift Container Platform 集群。每个 pod 由一个虚拟机(VM)表示。每个虚拟机都在 qemu 进程中运行,并托管一个 kata-agent 进程,该进程充当管理这些容器中运行的容器工作负载和进程的主管。另外还有两个额外的进程,这会增加开销:

  • containerd-shim-kata-v2 用于与 pod 通信。
  • virtiofsd 代表客户机处理主机文件系统访问。

每个虚拟机都配置有默认内存量。对于明确请求内存的容器,额外的内存会被热插到虚拟机中。

  • 如果容器在没有指定内存资源的情况下运行,则它能够消耗可用内存。它将执行此操作,直到虚拟机使用的总内存达到默认的分配量。客户机及其 I/O 缓冲区也消耗内存。
  • 如果容器被授予特定数量的内存,那么该内存会在容器启动前热插到虚拟机中。
  • 如果指定了内存限制,则在消耗的内存超过限制的内存时,工作负载将被终止。如果没有指定内存限制,则虚拟机上运行的内核可能会耗尽内存。如果内核内存不足,它可能会终止虚拟机上的其他进程。

默认内存大小

下表列出了资源分配的一些默认值。

Expand
资源

默认为虚拟机分配的内存

2Gi

启动时客户机 Linux 内核内存使用

~110Mi

QEMU 进程使用的内存(虚拟机内存除外)

~30Mi

virtiofsd 进程使用的内存(虚拟机 I/O 缓冲区除外)

~10Mi

containerd-shim-kata-v2 进程使用的内存

~20Mi

在 Fedora 上运行 dnf install 后的文件缓冲区缓存数据

~300Mi* [1]

  1. 文件缓冲区会出现并在多个位置考虑:

    • 在客户机中它被显示为文件缓冲缓存。
    • 在映射允许的用户空间文件 I/O 操作的 virtiofsd 守护进程中。
    • 在 QEMU 进程中作为客户机内存。
注意

内存使用率指标正确考虑内存用量总量,该指标仅计算该内存一次。

Pod 开销描述了节点上 pod 使用的系统资源量。您可以使用 oc describe runtimeclass kata 获得 kata 运行时类的当前 pod 开销,如下所示。

示例

$ oc describe runtimeclass kata
Copy to Clipboard Toggle word wrap

输出示例

Name:         kata
[...]
Metadata:
[...]
Overhead:
  Pod Fixed:
    Cpu:     250m
    Memory:  350Mi
[...]
Copy to Clipboard Toggle word wrap

您可以通过更改 RuntimeClassspec.overhead 字段来更改 pod 开销。例如,如果您的容器运行的配置为 QEMU 进程和客户机内核数据消耗超过 350Mi 内存,您可以更改 RuntimeClass 开销来满足您的需要。

注意

红帽支持指定的默认开销值。不支持更改默认开销值,这可能会导致技术问题。

示例

kind: RuntimeClass
apiVersion: node.k8s.io/v1
metadata:
  name: kata
overhead:
  podFixed:
    memory: "500Mi"
    cpu: "500m"
Copy to Clipboard Toggle word wrap

  • 虚拟机的默认分配为 2Gi。
  • Linux 内核在引导时使用大约 100Mi 内存。
  • QEMU 进程使用大约 30Mi 内存。
  • virtiofsd 进程使用大约 10Mi 内存。
  • shim-v2 进程使用大约 20Mi 内存。

在客户机中执行任何类型的文件系统 I/O 时,将在客户机内核中分配文件缓冲区。文件缓冲区也在主机上的 QEMU 进程以及 virtiofsd 进程中映射。例如,如果您在客户机中使用 300Mi 文件缓冲区缓存,QEMU 和 virtiofsd 都显示使用 300Mi 额外内存。但是,所有三种情况下都使用相同的内存。换句话说,内存使用的总量仅为 300Mi,这个值被映射在三个不同的位置。报告内存使用率指标时,会正确计算。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat