准备好安装 MicroShift
计划 MicroShift 安装并了解重要的配置
摘要
第 1 章 准备好安装 MicroShift 复制链接链接已复制到粘贴板!
通过规划 Red Hat Enterprise Linux (RHEL)安装类型和 MicroShift 配置来规划 Red Hat Device Edge。
1.1. 安装 MicroShift 的系统要求 复制链接链接已复制到粘贴板!
在安装 MicroShift 之前必须满足以下条件:
- 兼容的 Red Hat Enterprise Linux (RHEL)版本。如需更多信息,请参阅 兼容性表。
- AArch64 或 x86_64 系统架构。
- 2 个 CPU 内核。
- 2 GB RAM。从网络(UEFI HTTP 或 PXE 引导)安装需要 RHEL 3 GB RAM。
- 10 GB 存储。
- 在您的红帽帐户上有一个活跃的 MicroShift 订阅。如果您没有相关订阅,请联络您的销售代表以获得更多信息。
- 如果您的工作负载需要持久性卷(PV),则代表您有一个有足够可用工作负载的逻辑卷管理器(LVM)卷组(VG)。
这些要求是 MicroShift 和 Red Hat Enterprise Linux (RHEL)的最低系统要求。为计划运行的工作负载添加系统要求。
例如,如果 IoT 网关解决方案需要 4 GB RAM,则您的系统至少需要 2 GB 用于 Red Hat Enterprise Linux (RHEL)和 MicroShift,再加上 4 GB 工作负载。总共需要 6 GB RAM。
如果要在远程位置部署物理设备,建议允许额外的容量来满足将来的需要。如果您不确定所需的 RAM,如果预算允许,请使用设备可以支持的最大 RAM 容量。
确保配置对系统的安全访问,以便相应地管理它。如需更多信息,请参阅使用 OpenSSH 的两个系统间使用安全通信。
1.2. 兼容性表 复制链接链接已复制到粘贴板!
计划使用 MicroShift 版本对受支持的 RHEL for Edge 版本配对,如以下兼容性表所述。
Red Hat Device Edge 发行版本兼容性列表
Red Hat Enterprise Linux (RHEL)和 MicroShift 作为一个设备边缘计算的单一解决方案一起工作。您可以单独更新每个组件,但产品版本必须兼容。支持的 Red Hat Device Edge 配置会为每个版本一起使用验证的版本,如下表所示:
| RHEL 版本 | MicroShift 版本 | 支持的 MicroShift 版本 → 版本更新 |
|---|---|---|
| 9.4 | 4.17 | 4.17.1 → 4.17.z |
| 9.4 | 4.16 | 4.16.0 → 4.16.z, 4.16 → 4.17 |
| 9.2, 9.3 | 4.15 | 4.15.0 → 4.15.z, 4.15 → 4.16 on RHEL 9.4 |
| 9.2, 9.3 | 4.14 | 4.14.0 → 4.14.z, 4.14 → 4.15 或 4.14 → 4.16 on RHEL 9.4 |
1.3. MicroShift 安装工具 复制链接链接已复制到粘贴板!
要使用 MicroShift,您必须已经有或计划安装 RHEL 类型,如在裸机上,或作为您置备的虚拟机(VM)。虽然每个用例都有不同的详情,但每个 Red Hat Device Edge 安装都使用 RHEL 工具和 OpenShift CLI (oc)。
您可以使用 RPM 在现有 RHEL 机器上安装 MicroShift。如需更多信息 ,请参阅从 RPM 软件包安装。除非同时安装基于镜像的 RHEL 系统或虚拟机,否则不需要其他工具。
1.4. RHEL 安装类型 复制链接链接已复制到粘贴板!
在您要运行集群的位置以及应用程序需要做什么来确定您选择的 RHEL 安装类型。对于每个安装目标,您必须同时配置操作系统和 MicroShift。考虑应用程序存储需求、集群或应用程序访问的网络,以及您的身份验证和安全要求。
了解 RHEL 安装类型之间的区别,包括支持范围,以及所使用的工具。
1.4.1. 使用 RPM 或基于软件包的安装 复制链接链接已复制到粘贴板!
这个简单的安装类型使用基本命令在现有 RHEL 机器上安装 MicroShift。如需更多信息 ,请参阅从 RPM 软件包安装。除非同时安装 RHEL 系统或虚拟机(VM),否则不需要其他工具。
1.4.2. 基于 RHEL 镜像的安装 复制链接链接已复制到粘贴板!
基于镜像的安装类型涉及创建为边缘部署优化的基于 rpm-ostree的、不可变的 RHEL 版本。
- RHEL for Edge 可以部署到生产环境中的边缘。此安装类型可用于存在网络连接或完全离线,具体取决于本地环境。
- RHEL 的镜像模式提供技术预览支持范围。此基于镜像的安装类型基于 OCI 容器镜像并可引导容器。请参阅 bootc: Getting started with bootable containers for an introduction to bootc Technology。
在选择基于镜像的安装时,请考虑安装目标是否处于离线状态或联网状态、您要构建系统镜像的位置,以及如何计划加载 Red Hat Device Edge。使用以下场景作为常规指导:
- 如果您在断开连接的环境外构建完全自包含的 RHEL for Edge 或 RHEL ISO 的镜像模式,然后在边缘设备中本地安装 ISO,您可能不需要 RPM 存储库或镜像 registry。
- 如果您在未包含容器镜像的断开连接的环境中构建 ISO,但仅由 RPM 组成,则在断开连接的环境中需要镜像 registry。您可以使用您的镜像 registry 来拉取容器镜像。
- 如果您在断开连接的环境中构建镜像,或使用软件包模式进行安装,则需要镜像 registry 和本地 RPM 镜像存储库。您可以将 RHEL reposync 工具或 Red Hat Satellite 用于高级用例。如需更多信息 ,请参阅 如何在不使用 Satellite 服务器和 Red Hat Satellite 的情况下为 Red Hat Enterprise Linux 8 和 9 的最新更新 创建本地镜像。
1.5. RHEL 安装工具和概念 复制链接链接已复制到粘贴板!
熟悉以下 RHEL 工具和概念:
- Kickstart 文件,其中包含安装特定操作系统时使用的配置和说明。
RHEL 镜像构建器是用于创建部署就绪的自定义系统镜像的工具。RHEL 镜像构建器使用您创建的蓝图来生成 ISO。RHEL 镜像构建器最好在 RHEL 虚拟机上安装,并使用
composer-cli工具构建。要设置这些工具并查看工作流,请参阅以下 RHEL 文档链接:- 蓝图文件将 RHEL 镜像构建器定向到 ISO 中包含的项目。镜像蓝图提供镜像自定义的持久性定义。您可以从单个蓝图创建多个构建。您还可以编辑现有蓝图,以根据要求变化构建新 ISO。如需更多信息 ,请参阅 RHEL 文档中的使用命令行界面创建蓝图。
ISO,这是 MicroShift 在其中运行的可引导操作系统。
1.6. Red Hat Device Edge 安装步骤 复制链接链接已复制到粘贴板!
对于大多数安装类型,还必须执行以下步骤:
- 从 Red Hat Hybrid Cloud 控制台下载 pull secret。
- 通过向 MicroShift YAML 配置文件添加参数和值,准备好配置 MicroShift。如需更多信息 ,请参阅使用 MicroShift 配置文件。
决定是否要为 MicroShift 集群中使用的应用程序和任务配置存储,或者完全禁用 MicroShift 存储插件。
- 有关在 RHEL 中创建卷组和逻辑卷的更多信息,请参阅 逻辑卷管理概述。
- 有关 MicroShift 插件的更多信息,请参阅使用 LVMS 插件的动态存储。
根据您计划 MicroShift 集群和应用程序的访问需求来配置网络设置。考虑是否使用单堆栈网络、配置防火墙或配置路由。
- 有关 MicroShift 网络选项的更多信息,请参阅了解网络设置。
-
安装 OpenShift CLI (
oc)以访问集群,请参阅 OpenShift CLI 入门。
当可预测的延迟至关重要的情况下,可以使用 Red Hat Enterprise Linux for Real Time (实时内核)。低延迟应用程序还需要工作负载分区。有关低延迟和实时内核的更多信息,请参阅配置低延迟。
第 2 章 在 MicroShift 中使用 FIPS 模式 复制链接链接已复制到粘贴板!
您可以在 Red Hat Enterprise Linux (RHEL) 9 上基于 RPM 的 MicroShift 安装中使用 FIPS 模式。
- 要在 MicroShift 容器中启用 FIPS 模式,必须在机器启动前启用 worker 机器内核以 FIPS 模式运行。
- 不支持在 Red Hat Enterprise Linux for Edge (RHEL for Edge)镜像中使用 FIPS。
- 不支持将 FIPS 与 RHEL 镜像模式一起使用。
2.1. 基于 RHEL RPM 的安装的 FIPS 模式 复制链接链接已复制到粘贴板!
将 FIPS 与 MicroShift 搭配使用需要在 Red Hat Enterprise Linux (RHEL)安装中启用加密模块自我检查。在将主机操作系统配置为使用 FIPS 模块后,MicroShift 容器会自动启用来以 FIPS 模式运行。
- 当 RHEL 以 FIPS 模式启动时,MicroShift 核心组件使用已提交到 NIST for FIPS 140-2/140-3 验证的 RHEL 加密库。
当在计划用作 worker 机器的机器上安装 RHEL 9 时,您必须启用 FIPS 模式。
重要因为 FIPS 必须在集群首次启动的操作系统前启用,所以您不能在部署集群后启用 FIPS。
- MicroShift 使用 FIPS 兼容的 Golang 编译器。
- CRI-O 容器运行时支持 FIPS。
2.1.1. 限制: 复制链接链接已复制到粘贴板!
- TLS 实现 FIPS 支持没有完成。
- FIPS 实现不提供单个函数来计算哈希函数并验证基于该哈希的键。在以后的 MicroShift 版本中,将继续评估这个限制以改进。
第 3 章 greenboot 健康检查框架 复制链接链接已复制到粘贴板!
Greenboot 是 rpm-ostree 系统上 systemd 服务的通用健康检查框架,如 Red Hat Enterprise Linux for Edge (RHEL for Edge)。此框架包含在带有 microshift-greenboot 和 greenboot-default-health-checks RPM 软件包的 MicroShift 安装中。
Greenboot 健康检查会在不同时间运行来评估系统健康状况,并在软件出现问题的情况下自动回滚到最后一个健康状态,例如:
- 默认健康检查脚本会在每次系统启动时运行。
- 除了默认的健康检查外,您还可以编写、安装和配置应用程序健康检查脚本,以便在每次系统启动时也运行。
- Greenboot 可以降低更新期间被锁定在边缘设备的风险,并防止在更新失败时出现大量服务中断。
-
当检测到失败时,系统使用
rpm-ostree回滚功能引导到最后一个已知的工作配置。此功能对于直接可服务性是有限或不存在的边缘设备特别有用。
MicroShift 应用程序健康检查脚本包含在 microshift-greenboot RPM 中。greenboot-default-health-checks RPM 包括验证 DNS 和 ostree 服务是否可以访问健康检查脚本。您可以为正在运行的工作负载创建自己的健康检查脚本。您可以编写一个来验证应用程序是否已启动,例如:
3.1. Greenboot 如何使用目录运行脚本 复制链接链接已复制到粘贴板!
健康检查脚本从四个 /etc/greenboot 目录运行。这些脚本按字母顺序运行。当您为工作负载配置脚本时请注意这一点。
当系统启动时,greenboot 在 required.d 和 want .d 目录中运行脚本。根据这些脚本的结果,greenboot 会继续启动或尝试回滚,如下所示:
-
系统如预期:当
required.d目录中的所有脚本都成功运行时,greenboot 会运行/etc/greenboot/green.d目录中存在的任何脚本。 -
系统问题:如果
required.d目录中任何脚本失败,greenboot 会运行red.d目录中存在的任何预滚动脚本,然后重新启动系统。
Greenboot 将脚本和健康检查输出重定向到系统日志。登录后,每日消息将提供整体系统健康输出。
3.1.1. Greenboot 目录详情 复制链接链接已复制到粘贴板!
从任何脚本返回非零退出代码意味着该脚本已失败。Greenboot 会在尝试回滚到以前的版本前重启系统来重试脚本。
/etc/greenboot/check/required.d包含不能失败的健康检查。-
如果脚本失败,greenboot 默认会重试三次。您可以通过将
GREENBOOT_MAX_BOOTS参数设置为所需的重试次数,在/etc/greenboot/greenboot.conf文件中配置重试次数。 - 在所有重试失败后,如果可用,greenboot 会自动启动回滚。如果没有可用的回滚,系统日志输出显示需要手动干预。
-
MicroShift 的
40_microshift_running_check.sh健康检查脚本安装在这个目录中。
-
如果脚本失败,greenboot 默认会重试三次。您可以通过将
/etc/greenboot/check/wanted.d包含允许失败的健康脚本,而不会导致回滚系统。- 如果这些脚本失败,greenboot 会记录失败,但不会启动一个回滚。
-
/etc/greenboot/green.d包含在 greenboot 声明开始成功后运行的脚本。 -
/etc/greenboot/red.d包含在 greenboot 声明启动失败时运行的脚本,包括40_microshift_pre_rollback.shprerollback 脚本。这个脚本会在系统回滚前执行。该脚本执行 MicroShift pod 和 OVN-Kubernetes 清理,以避免在将系统回滚到以前的版本后出现潜在的冲突。
如果您自定义 /etc/greenboot/greenboot.conf 文件中任何环境变量的值,则当 greenboot RPM 软件包被更新或降级时,这些更改可能会丢失。
-
要在使用 MicroShift 构建系统镜像时保留自定义,请将
greenboot.conf文件添加到蓝图中。 -
要在使用 RPM 安装时保留自定义,请在安装 MicroShift 和 greenboot RPM 后对
greenboot.conf文件应用更改。
3.2. MicroShift 健康检查脚本 复制链接链接已复制到粘贴板!
40_microshift_running_check.sh 健康检查脚本仅执行核心 MicroShift 服务的验证。在 greenboot 目录中安装自定义工作负载健康检查脚本,以确保系统更新后成功应用程序操作。脚本按字母顺序运行。
MicroShift 健康检查在下表中列出:
| 验证 | Pass | Fail |
|---|---|---|
|
检查该脚本是否使用 | 下一步 |
|
|
检查 | 下一步 |
|
|
等待 | 下一步 |
|
| 等待 Kubernetes API 健康端点正常工作并接收流量 | 下一步 |
|
| 等待任何 pod 启动 | 下一步 |
|
| 对于每个核心命名空间,等待拉取镜像 | 下一步 |
|
| 对于每个核心命名空间,等待 pod 就绪 | 下一步 |
|
| 对于每个核心命名空间,检查 pod 是否没有重启 |
|
|
3.2.1. 验证等待周期 复制链接链接已复制到粘贴板!
每个验证中的等待周期默认为五分钟。在等待周期后,如果验证没有成功,则会声明它失败。每次引导验证循环后,这个等待周期会递增到基础等待周期。
-
您可以通过在
/etc/greenboot/greenboot.conf配置文件中设置MICROSHIFT_WAIT_TIMEOUT_SEC环境变量来覆盖 base-time 等待周期。例如,您可以通过将值重置为 180 秒,将等待时间更改为三分钟,如MICROSHIFT_WAIT_TIMEOUT_SEC=180。
3.3. 启用 systemd 日志服务数据持久性 复制链接链接已复制到粘贴板!
systemd 日志服务的默认配置会将数据存储在 volatile /run/log/journal 目录中。要在系统启动和重启后查看系统日志,您必须启用日志持久性并设置对最大日志数据大小的限制。
流程
运行以下命令来创建目录:
sudo mkdir -p /etc/systemd/journald.conf.d
$ sudo mkdir -p /etc/systemd/journald.conf.dCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建配置文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 根据您的大小要求编辑配置文件值。
3.4. 更新和第三方工作负载 复制链接链接已复制到粘贴板!
更新后,健康检查特别有用。您可以检查 greenboot 健康检查的输出,并确定是否声明了更新的有效。此健康检查可帮助您确定系统是否正常工作。
更新的健康检查脚本会安装到 /etc/greenboot/check/required.d 目录中,并在每次系统启动时自动执行。退出具有非零状态的脚本意味着系统启动已被声明为失败。
等待直到声明更新在启动第三方工作负载前有效。如果在工作负载启动后执行回滚,您可以丢失数据。在更新完成前,一些第三方工作负载在设备上创建或更新数据。在回滚后,文件系统会在更新前恢复到其状态。
3.5. 检查更新的结果 复制链接链接已复制到粘贴板!
成功启动后,greenboot 在 GRUB 中将变量 boot_success= 设置为 1。您可以按照以下流程在系统日志中更新后查看系统健康检查的整体状态。
流程
要访问系统健康检查的整体状态,请运行以下命令:
sudo grub2-editenv - list | grep ^boot_success
$ sudo grub2-editenv - list | grep ^boot_successCopy to Clipboard Copied! Toggle word wrap Toggle overflow
成功启动系统的输出示例
boot_success=1
boot_success=1
3.6. 在系统日志中访问健康检查输出 复制链接链接已复制到粘贴板!
您可以按照以下流程手动访问系统日志中的健康检查输出。
流程
要访问健康检查的结果,请运行以下命令:
sudo journalctl -o cat -u greenboot-healthcheck.service
$ sudo journalctl -o cat -u greenboot-healthcheck.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow
失败健康检查的输出示例
3.7. 在系统日志中访问预滚动健康检查输出 复制链接链接已复制到粘贴板!
您可以在系统日志中访问健康检查脚本的输出。例如,按照以下流程检查 prerollback 脚本的结果。
流程
要访问预滚动脚本的结果,请运行以下命令:
sudo journalctl -o cat -u redboot-task-runner.service
$ sudo journalctl -o cat -u redboot-task-runner.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow
prerollback 脚本的输出示例
3.8. 使用健康检查脚本检查更新 复制链接链接已复制到粘贴板!
使用以下步骤在更新后访问系统日志中的 greenboot 健康检查脚本的输出。
流程
要访问更新检查的结果,请运行以下命令:
sudo grub2-editenv - list | grep ^boot_success
$ sudo grub2-editenv - list | grep ^boot_successCopy to Clipboard Copied! Toggle word wrap Toggle overflow
成功更新的输出示例
boot_success=1
boot_success=1
如果您的命令返回 boot_success=0,则 greenboot 健康检查仍然在运行,或者更新失败。