Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

第 2 章 系统和环境要求

2.1. 系统要求

OpenShift Container Platform 环境中的主机必须满足以下硬件规格和系统级别要求。

2.1.1. 红帽订阅

您的红帽帐户必须具有有效的 OpenShift Container Platform 订阅。如果没有,请与您的销售代表联系以了解更多信息。

2.1.2. 最低硬件要求

系统要求因主机类型而异:

Master

  • 物理或虚拟系统,或者在一个公共或私有 IaaS 环境中运行的实例。
  • 基础操作系统:使用 "Minimal" 安装选项以及来自 Extras 频道的最新软件包的 Red Hat Enterprise Linux(RHEL)7.5 或更新版本,或Atomic Host 7.4.5 或更新版本。

    • IBM POWER9: RHEL-ALT 7.5,使用 "Minimal" 安装选项以及来自 Extras 频道中的最新软件包。
    • IBM POWER8: RHEL 7.5,使用 "Minimal" 安装选项以及来自 Extras 频道的最新软件包。如果使用 RHEL,则必须使用以下最小内核版本:
    • RHEL 7.5: 3.10.0-862.31.1
    • RHEL 7.6: 3.10.0-957.27.2
    • RHEL 7.7: 3.10.0-1062
  • 最少 4 个 vCPU(强烈建议使用更多)。
  • 最少 16 GB RAM(强烈建议使用更多内存,特别是 etcd 和 master 在一起)。
  • 最小 40 GB 硬盘空间,用于包含 /var/ 的文件系统。 redcircle 1
  • 最小 1 GB 硬盘空间,用于包含 /usr/local/bin/ 的文件系统。
  • 最小1 GB 硬盘空间,用于包含系统临时目录的文件系统。 redcircle 2
  • etcd 和 master 在一起至少需要 4 个内核。双核系统无法工作。

节点

  • 物理或虚拟系统,或在公有或私有 IaaS 上运行的实例。
  • 基础操作系统:使用 "Minimal" 安装选项的 RHEL 7.5 或更高版本,或 RHEL Atomic Host 7.4.5 或更新版本。

    • IBM POWER9: RHEL-ALT 7.5,使用 "Minimal" 安装选项以及来自 Extras 频道中的最新软件包。
    • IBM POWER8: RHEL 7.5,使用 "Minimal" 安装选项以及来自 Extras 频道的最新软件包。如果使用 RHEL,则必须使用以下最小内核版本:
    • RHEL 7.5: 3.10.0-862.31.1
    • RHEL 7.6: 3.10.0-957.27.2
    • RHEL 7.7: 3.10.0-1062
  • NetworkManager 1.0 或更高版本。
  • 1 个 vCPU。
  • 最小 8 GB RAM。
  • 最小 15 GB 硬盘空间,用于包含 /var/ 的文件系统。 redcircle 1
  • 最小 1 GB 硬盘空间,用于包含 /usr/local/bin/ 的文件系统。
  • 最小1 GB 硬盘空间,用于包含系统临时目录的文件系统。 redcircle 2
  • 为 Docker 的存储后端运行容器的每个系统都最少需要一个 15 GB 未分配空间 ; 请参阅 配置 Docker 存储。可能还需要额外空间,这要看节点上运行的容器的大小和数量。

外部 etcd 节点

  • etcd 数据需要最少 20 GB 硬盘空间。
  • 有关如何正确配置 etcd 节点的信息,请参阅 CoreOS etcd 文档中的硬件建议部分
  • 目前,OpenShift Container Platform 在 etcd 中存储镜像、构建和部署元数据。您需要定期 修剪旧资源。如果您计划大量使用这些资源,请将 etcd 放置到有大量内存和快速 SSD 驱动器的机器上。

Ansible 控制器

运行 Ansible playbook 的主机,对于清单(inventory)中的每个主机都至少需要有 75MiB 可用内存。

redcircle 1 满足 RHEL Atomic Host 中 /var/ 文件系统大小的要求需要对默认配置进行修改。有关在安装过程中或安装后配置此功能的说明,请参阅使用 Docker 格式容器管理存储

redcircle 2 系统的临时目录根据 Python 标准库中 tempfile 模块中定义的规则确定。

您必须为每个运行容器守护进程的系统配置存储。对于容器化安装,您需要在 master 上存储。另外,在默认情况下,Web 控制台在 master 上的容器中运行,masters 需要存储来运行 Web 控制台。容器在节点上运行,因此节点始终需要存储。存储的大小取决于工作负载、容器数量、运行容器的大小以及容器的存储要求。您还必须配置存储以运行容器化 etcd。

强烈建议您使用带有可快速处理串口写入(fsync)的存储的 etcd,如 NVMe 或者 SSD。不建议使用 Ceph、NFS 和 spinning 磁盘。

2.1.3. 产品级别硬件要求

满足最低要求的测试或示例环境功能。对于生产环境,建议使用以下设置:

Master 主机
在带有外部 etcd 的具有高可用性功能的 OpenShift Container Platform 集群中,master 主机需要满足最低要求,每 1000 个 Pod 需要 1 个 CPU 内核和 1.5 GB 内存。因此,建议有 2000 个 pod 的 OpenShift Container Platform集群中的 master 主机最少需要 2 个 CPU 内核,16 GB RAM,再加上 2 个 CPU 内核和 3 GB RAM,总计 4 个 CPU 内核和 19 GB RAM。

更多详情,请参阅 OpenShift Container Platform master 主机的建议实践

节点主机
节点主机的大小取决于其预期的工作负载大小。作为 OpenShift Container Platform 集群管理员,您必须计算预期的工作负载,再加上大约 10% 的开销。对于生产环境,请分配足够的资源,以防止节点主机故障影响您的最大容量。

如需更多信息,请参阅 大小考虑集群限制

重要

在节点中过度订阅物理资源会影响在 pod 放置过程中对 Kubernetes 调度程序的资源保证。了解可以采取什么措施避免出现内存交换问题

2.1.4. 存储管理

表 2.1. OpenShift Container Platform 组件写入数据的主目录

目录备注大小预期的增长

/var/lib/openshift

只用于 etcd 存储,当单一 master 模式且 etcd 嵌入到 atomic-openshift-master 进程中时。

小于 10GB。

随着环境增长会缓慢增长。只存储元数据。

/var/lib/etcd

用于 etcd 存储,当多 Master 模式或由管理员创建独立 etcd 时 。

小于 20 GB。

随着环境增长会缓慢增长。只存储元数据。

/var/lib/docker

当运行时为 docker 时,这是挂载点。用于活跃容器运行时(包括 Pod)和本地镜像存储(不用于 registry 存储)。挂载点应当由 docker-storage 管理,而不是手动管理。

有 16 GB 内存的节点需要 50 GB。

每多加 8 GB 内存需要额外 20-25 GB。

增长受运行容器容量的限制。

/var/lib/containers

当运行时为 CRI-O 时,这是挂载点。用于活跃容器运行时(包括 Pod)和本地镜像存储(不用于 registry 存储)。

有 16 GB 内存的节点需要 50 GB。

每多加 8 GB 内存需要额外 20-25 GB。

增长受运行容器容量的限制。

/var/lib/origin/openshift.local.volumes

pod 的临时卷(Ephemeral volume)存储。这包括在运行时挂载到容器的任何外部存储。包括环境变量、kube secrets 以及不受持久性存储 PV 支持的数据卷。

可变

如果需要存储的 pod 使用持久性卷,则最小。如果使用临时存储,可能会快速增长。

/var/log

所有组件的日志文件。

10 到 30 GB。

日志文件可能会快速增长 ; 大小可由通过增加磁盘或对日志进行轮转进行控制。

2.1.5. Red Hat Gluster Storage 硬件要求

任何在聚合模式或独立模式集群中使用的节点都被视为存储节点。虽然单个节点不能在多个组中,但存储节点可以被分到不同的集群组。对于每个存储节点组:

  • 根据存储 gluster volumetype 选项,每个组最少需要一个或多个存储节点。
  • 每个存储节点必须至少有 8 GB RAM。这可允许运行 Red Hat Gluster Storage Pod,以及其他应用程序和底层操作系统。

    • 每个 GlusterFS 卷也在其存储集群中的每个存储节点上消耗内存,大约是 30MB。RAM 总量应该根据计划或预期的并发卷数量来决定。
  • 每个存储节点必须至少有一个没有当前数据或元数据的原始块设备。这些块设备将完全用于 GlusterFS 存储。确保不存在以下内容:

    • 分区表(GPT 或 MSDOS)
    • 文件系统或者文件系统签名
    • 前卷组和逻辑卷的 LVM2 签名
    • LVM2 物理卷的 LVM2 元数据

    如果有疑问,使用 wipefs -a <device> 命令清除以上数据。

重要

建议规划两个集群:一个用于存储基础架构应用程序(如 OpenShift Container Registry)的专用存储集群,和一个用于常规应用程序的专用存储集群。这需要总共 6 个存储节点。此项建议是为了避免在创建 I/O 和卷时对性能造成潜在影响。

2.1.6. 监控硬件要求

监控堆栈需要额外的系统资源,它会被默认安装。请参阅 计算资源建议集群监控文档

2.1.7. SELinux 要求

在安装 OpenShift Container Platform 之前,必须在所有服务器上启用 Security-Enhanced Linux(SELinux),否则安装程序将失败。另外,在 /etc/selinux/config 文件中配置 SELINUX =enforcing 和 SELINUXTYPE=targeted:

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=enforcing
# SELINUXTYPE= can take one of these three values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

2.1.8. 可选:配置内核用法

默认情况下,OpenShift Container Platform master 和节点使用它们运行的系统中的所有可用内核。您可以通过设置 GOMAXPROCS 环境变量来选择 OpenShift Container Platform 使用的内核数。如需更多信息,请参阅 Go Language 文档,包括 GOMAXPROCS 环境变量是如何工作的。

例如,在启动服务器前运行以下命令使 OpenShift Container Platform 只在一个核心上运行:

# export GOMAXPROCS=1

2.1.9. 可选:使用 OverlayFS

OverlayFS 是一个联合文件系统,允许用户在一个文件系统上使用另一个文件系统。

从 Red Hat Enterprise Linux 7.4 开始,您可以选择将 OpenShift Container Platform 环境配置为使用 OverlayFS。除了老的 overlay 驱动程序外,还完全支持 overlay2 图形驱动程序。但是,红帽建议使用 overlay2 而不是 overlay,因为其有速度和简单实施的优点。

比较 Overlay 和 Overlay2 Graph Drivers 提供了更多与 overlayoverlay2 驱动程序相关的信息。

有关如何为 Docker 服务启用 overlay2 图形驱动程序的说明,请参见 Atomic Host 文档中的 Overlay 图形驱动程序部分。

2.1.10. 安全警告

OpenShift Container Platform 在集群中的主机上运行容器,在一些情况下(如构建操作和 registry 服务),它使用特权容器进行操作。另外,这些容器会访问主机的 Docker 守护进程,并执行 docker builddocker push 操作。因此,集群管理员必须了解对镜像执行 docker run 操作相关的固有安全风险,因为它们实际具有根访问权限。这对 docker build 操作尤其重要。

可将有风险的容器分配给特定的节点,从而使可能的风险只限制在这些特定的节点中。更多信息,请参阅开发指南中的指定构建到特定节点 部分。对于集群管理员,请参阅 配置全局构建默认值和覆盖标题

您还可以使用 安全上下文约束来控制 Pod 可以执行的操作,以及它有权访问的内容。有关如何在 Dockerfile 中使用 USER 来启用镜像运行的信息,请参阅管理安全性上下文约束 (需要具有 cluster-admin 特权的用户)。

如需了解更多相关信息,请参阅以下文章: