准备好安装 MicroShift
计划 MicroShift 安装并了解重要的配置
摘要
第 1 章 准备好安装 MicroShift 复制链接链接已复制到粘贴板!
规划 MicroShift 安装并根据需要完成主机配置步骤。
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.18 | 4.18.0 → 4.18.z |
9.4 | 4.17 | 4.17.1 → 4.17.z, 4.17 → 4.18 |
9.4 | 4.16 | 4.16.0 → 4.16.z, 4.16 → 4.17, 4.16 → 4.18 |
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 |
第 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.sh
prerollback 脚本。这个脚本会在系统回滚前执行。该脚本执行 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.d
Copy 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_success
Copy 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.service
Copy 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.service
Copy 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_success
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
成功更新的输出示例
boot_success=1
boot_success=1
如果您的命令返回 boot_success=0
,则 greenboot 健康检查仍然在运行,或者更新失败。