第 2 章 系统和环境要求
2.1. 系统要求
OpenShift Container Platform 环境中的主机必须满足以下硬件规格和系统级别要求。
2.1.1. 红帽订阅
您的红帽帐户必须具有有效的 OpenShift Container Platform 订阅。如果没有,请与您的销售代表联系以了解更多信息。
2.1.2. 最低硬件要求
系统要求因主机类型而异:
| |
| |
外部 etcd 节点 |
|
Ansible 控制器 | 运行 Ansible playbook 的主机,对于清单(inventory)中的每个主机都至少需要有 75MiB 可用内存。 |
满足 RHEL Atomic Host 中 /var/ 文件系统大小的要求需要对默认配置进行修改。有关在安装过程中或安装后配置此功能的说明,请参阅使用 Docker 格式容器管理存储。
系统的临时目录根据 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. 存储管理
目录 | 备注 | 大小 | 预期的增长 |
---|---|---|---|
/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 提供了更多与 overlay 和 overlay2 驱动程序相关的信息。
有关如何为 Docker 服务启用 overlay2
图形驱动程序的说明,请参见 Atomic Host 文档中的 Overlay 图形驱动程序部分。
2.1.10. 安全警告
OpenShift Container Platform 在集群中的主机上运行容器,在一些情况下(如构建操作和 registry 服务),它使用特权容器进行操作。另外,这些容器会访问主机的 Docker 守护进程,并执行 docker build
和 docker push
操作。因此,集群管理员必须了解对镜像执行 docker run
操作相关的固有安全风险,因为它们实际具有根访问权限。这对 docker build
操作尤其重要。
可将有风险的容器分配给特定的节点,从而使可能的风险只限制在这些特定的节点中。更多信息,请参阅开发指南中的指定构建到特定节点 部分。对于集群管理员,请参阅 配置全局构建默认值和覆盖标题。
您还可以使用 安全上下文约束来控制 Pod 可以执行的操作,以及它有权访问的内容。有关如何在 Dockerfile 中使用 USER 来启用镜像运行的信息,请参阅管理安全性上下文约束 (需要具有 cluster-admin 特权的用户)。
如需了解更多相关信息,请参阅以下文章: