- 概述
- 要求
- 部署模板
- 手动:准备安装
- 手动:准备安装
- 步骤 2:为离线安装配置符合 OCI 的注册表
- 步骤 3:配置外部对象存储
- 步骤 4:配置 High Availability Add-on
- 步骤 5:配置 SQL 数据库
- 步骤 7:配置 DNS
- 步骤 8:配置磁盘
- 步骤 9:配置内核和操作系统级别设置
- 步骤 10:配置节点端口
- 步骤 11:应用其他设置
- 步骤 12:验证并安装所需的 RPM 包
- 步骤 13:生成 cluster_config.json
- Cluster_config.json 示例
- 常规配置
- 配置文件配置
- 证书配置
- 数据库配置
- 外部对象存储配置
- 预签名 URL 配置
- ArgoCD 配置
- Kerberos 身份验证配置
- 符合 OCI 的外部注册表配置
- Disaster Recovery:主动/被动和主动/主动配置
- High Availability Add-on 配置
- 特定于 Orchestrator 的配置
- Insights 特定配置
- Process Mining 特定配置
- Document Understanding 特定配置
- Automation Suite Robot 特定配置
- 监控配置
- 可选:配置代理服务器
- 可选:在多节点 HA 就绪生产集群中启用区域故障恢复
- 可选:传递自定义 resolv.conf
- 可选:提高容错能力
- 添加具有 GPU 支持的专用代理节点
- 为 Automation Suite Robot 添加专用代理节点
- 步骤 15:为离线安装配置临时 Docker 注册表
- 步骤 16:验证安装的先决条件
- 正在运行 uipathctl
- 手动:执行安装
- 安装后
- 集群管理
- 监控和警示
- 迁移和升级
- 特定于产品的配置
- 最佳实践和维护
- 故障排除
- 如何在安装过程中对服务进行故障排除
- 如何减少 NFS 备份目录的权限
- 如何卸载集群
- 如何清理离线工件以改善磁盘空间
- 如何清除 Redis 数据
- 如何启用 Istio 日志记录
- 如何手动清理日志
- 如何清理存储在 sf-logs 存储桶中的旧日志
- 如何禁用 AI Center 的流日志
- 如何对失败的 Automation Suite 安装进行调试
- 如何在升级后从旧安装程序中删除映像
- 如何禁用 TX 校验和卸载
- 如何手动将 ArgoCD 日志级别设置为 Info
- 如何扩展 AI Center 存储
- 如何为外部注册表生成已编码的 pull_secret_value
- 如何解决 TLS 1.2 中的弱密码问题
- 如何查看 TLS 版本
- 如何使用证书
- 如何计划 Ceph 备份和还原数据
- 如何使用集群内对象存储 (Ceph) 收集 DU 使用情况数据
- 如何在离线环境中安装 RKE2 SELinux
- 如何清理 NFS 服务器上的旧差异备份
- 如何在已启用 FIPS 的集群中部署 Insights
- 如何迁移到 cgroup v2
- 如何在虚拟机重新启动后恢复 Kerberos 身份验证
- 如何将本地 Docker 映像推送到集群内注册表
- 如何从备份中排除存储桶
- 无法获取沙盒映像
- Pod 未显示在 ArgoCD 用户界面中
- Redis 探测器失败
- RKE2 服务器无法启动
- 在 UiPath 命名空间中找不到密码
- ArgoCD 在首次安装后进入“进行中”状态
- 处于 CrashLoopBackOff 状态的 ArgoCD 存储库服务器 Pod
- 手动 ArgoCD 网络策略缓解措施 (MHSA-47m3-95c7-g2g8)
- 监控仪表板中缺少 Ceph-rook 指标
- 诊断性运行状况检查期间报告的错误不匹配
- 为 uipathctl 创建的工作负载配置资源请求和限制
- 无正常的上游问题
- 杀毒软件阻止了 Redis 启动
- 无法在启用 TLS 证书验证的情况下启动 AI Center 和 Document Understanding Pod
- Fluentd 不会在 IPv6 环境中导出日志
- Studio 桌面版无法加载 Integration Service 连接器和活动
- 运行诊断工具
- 使用 Automation Suite 支持捆绑包
- 探索日志
在 Automation Suite 中安全启动和关闭节点,涵盖手动和自动启动和关闭行为。
本页介绍 Automation Suite 的手动和自动启动和关闭行为。
您必须始终关闭一个节点,执行所需的操作,等待直到节点运行正常,然后关闭另一个节点以执行相同的操作。
下表描述了关闭集群服务或节点时可能遇到的不同场景。该表提供了针对每种情况您必须采取的详细操作,以及有关了解这些操作所导致的预期行为的指南。
| 场景 | 操作 | 预期行为 |
|---|---|---|
| 出于维护或任何其他原因,在不关闭节点的情况下关闭一个节点上的集群服务。 |
| 在 HA 方案中,大多数服务将保持运行状态。节点启动后应不会出现任何问题,并且任何关闭的服务均应重新启动。 |
| 出于维护或任何其他原因,在不关闭节点的情况下关闭所有集群服务。 |
| 服务将不可用。节点启动应不会出现问题。 |
| 正在关闭所有节点。 | 如果您的虚拟机监控程序管理门户(例如 VMware、AWS)允许服务在不强制终止计算机的情况下正常关闭,请执行正常关闭。默认情况下,systemd 子系统会允许有一个宽限期,以便在强制终止服务之前关闭服务。但是,如果您的系统覆盖了配置的关机时间,则可能会干扰正常关机。 例如,在 AWS 上,平台可以在两分钟后强制终止虚拟机。因此,必须手动关闭服务,因为节点排空可能需要长达 5 分钟的时间(这是正常关闭的要求)。 | 如果正常关闭,则节点启动时应不会出现问题。 如果集群关闭超过 6 小时并配置了 Kerberos 身份验证,您可能需要在重新启动后续订 Kerberos 票证。有关详细信息,请参阅“虚拟机重新启动后恢复 Kerberos 身份验证” 。 |
| 关闭单个节点。 | 如果您的虚拟机监控程序管理门户(例如 VMware、AWS)允许服务在不强制终止计算机的情况下正常关闭,请执行正常关闭。默认情况下,systemd 子系统会允许有一个宽限期,以便在强制终止服务之前关闭服务。但是,如果您的系统覆盖配置的关闭时间,则可能会干扰正常关闭。例如,在 AWS 上,平台可以在两分钟后强制终止虚拟机。因此,必须手动关闭服务,因为节点排空可能需要长达 5 分钟的时间(这是正常关闭的要求)。 | 如果未强制关闭过程,则节点重新启动应该不会出现任何问题。 |
| 强制终止服务器节点。 | 不适用。 | 在大多数情况下,节点会启动,但某些使用持久性数据的服务可能会出现问题。尽管这些问题通常可以恢复,但强烈建议您设置备份。 在原始节点重新联机之前,Insights Pod 不会重新启动,以防止潜在的数据丢失。如果节点无法恢复,请联系支持团队。 |
关闭行为
在关闭期间,systemd 会按照启动顺序停止服务。由于 node-drain 服务具有指令 After=rke2-server.service 或 After=rke2-agent.service,因此它会在 rke2-service 关闭之前执行其关闭序列。这意味着在正确配置的系统中,只需正常关闭节点即可安全操作。
手动重新启动
如果您计划停止 rke2 服务并重新启动计算机,请执行以下步骤:
-
要确保集群在执行节点维护活动时正常运行,您必须将该节点上运行的工作负载排出到其他节点。要排空节点,请运行以下命令:
systemctl stop node-drain.servicesystemctl stop node-drain.service -
在节点上停止 Kubernetes 进程,具体取决于节点类型:
- 在服务器节点上:
systemctl stop rke2-serversystemctl stop rke2-server - 在代理节点上:
systemctl stop rke2-agentsystemctl stop rke2-agent
- 在服务器节点上:
-
终止 rke2 服务、Containerd 和所有子进程:
rke2-killall.shrke2-killall.sh
要下载rke2-killall.sh脚本,请参阅“安装包下载链接”。
启动行为
以 rke2-service 开头,在后面添加 node-drainer 和 node-uncordon。node-drainer 在启动时不执行任何操作,仅返回服务已启动的确认信息。
node-uncordon 仅运行一次并启动 /opt/node-drain.sh nodestart,从而取消封锁节点。这属于停止行为时发生的排出程序,会封锁节点,使其无法调度。当 rke2 服务启动时,这种状态持续存在。因此,必须在 rke2-service 重新启动后取消封锁节点。
手动启动
该服务会随 Automation Suite 自动启动。但是,如果已手动停止 rke2-service,您必须通过运行以下命令再次启动该服务:
-
在节点上启动 Kubernetes 进程,具体取决于节点类型:
- 在服务器节点上:
systemctl start rke2-serversystemctl start rke2-server - 在代理节点上:
systemctl start rke2-agentsystemctl start rke2-agent
- 在服务器节点上:
-
启动
rke2服务后,请取消封锁节点,以确保 Kubernetes 现在可以在此节点上计划工作负载:systemctl restart node-uncordonsystemctl restart node-uncordon -
启动节点后,您必须排空节点:
systemctl start node-drain.servicesystemctl start node-drain.service重要提示:如果系统重新启动,跳过此步骤可能会导致 Kubelet 服务以不正常的方式关闭。
修补集群节点
修补或重新启动服务器节点时,应用更改的顺序直接影响集群的稳定性。
补丁前检查
在接触任何节点之前,请确认集群运行状况良好:
-
确认所有三个 etcd 成员均运行良好:
ETCD_CONTAINER="$(/var/lib/rancher/rke2/bin/crictl ps --name etcd --state Running -q | head -n1)" /var/lib/rancher/rke2/bin/crictl exec "$ETCD_CONTAINER" etcdctl \ --endpoints=https://127.0.0.1:2379 \ --cacert=/var/lib/rancher/rke2/server/tls/etcd/server-ca.crt \ --cert=/var/lib/rancher/rke2/server/tls/etcd/server-client.crt \ --key=/var/lib/rancher/rke2/server/tls/etcd/server-client.key \ endpoint health --clusterETCD_CONTAINER="$(/var/lib/rancher/rke2/bin/crictl ps --name etcd --state Running -q | head -n1)" /var/lib/rancher/rke2/bin/crictl exec "$ETCD_CONTAINER" etcdctl \ --endpoints=https://127.0.0.1:2379 \ --cacert=/var/lib/rancher/rke2/server/tls/etcd/server-ca.crt \ --cert=/var/lib/rancher/rke2/server/tls/etcd/server-client.crt \ --key=/var/lib/rancher/rke2/server/tls/etcd/server-client.key \ endpoint health --cluster -
检查任何节点上是否存在崩溃循环:
journalctl -u rke2-server --since "2 hours ago" | grep -i "FAILURE\|left-over\|unclean"journalctl -u rke2-server --since "2 hours ago" | grep -i "FAILURE\|left-over\|unclean" -
验证是否存在最近的 etcd 快照:
ls -lth /var/lib/rancher/rke2/server/db/snapshots/ | head -5ls -lth /var/lib/rancher/rke2/server/db/snapshots/ | head -5
如果任何节点已处于崩溃循环或 etcd 运行状况检查失败,请不要开始修补。请先解决不稳定问题,然后再继续。
识别引导节点
引导节点通常是当前的 etcd 领导者。要识别该机器人,请运行以下命令并查找IS LEADER: true :
ETCD_CONTAINER="$(/var/lib/rancher/rke2/bin/crictl ps --name etcd --state Running -q | head -n1)"
/var/lib/rancher/rke2/bin/crictl exec "$ETCD_CONTAINER" etcdctl \
--endpoints=https://127.0.0.1:2379 \
--cacert=/var/lib/rancher/rke2/server/tls/etcd/server-ca.crt \
--cert=/var/lib/rancher/rke2/server/tls/etcd/server-client.crt \
--key=/var/lib/rancher/rke2/server/tls/etcd/server-client.key \
endpoint status --cluster
ETCD_CONTAINER="$(/var/lib/rancher/rke2/bin/crictl ps --name etcd --state Running -q | head -n1)"
/var/lib/rancher/rke2/bin/crictl exec "$ETCD_CONTAINER" etcdctl \
--endpoints=https://127.0.0.1:2379 \
--cacert=/var/lib/rancher/rke2/server/tls/etcd/server-ca.crt \
--cert=/var/lib/rancher/rke2/server/tls/etcd/server-client.crt \
--key=/var/lib/rancher/rke2/server/tls/etcd/server-client.key \
endpoint status --cluster
补丁程序顺序
始终先修补引导节点,然后再修补辅助节点。
首先修补引导节点,可确保在该节点出现故障时,两个辅助节点维持法定人数并推选新的领导者。然后,引导节点作为关注者处于干净状态重新加入。如果引导节点无法完全重新加入,则先修补辅助节点而最后修补引导节点可能会导致更广泛的不稳定。
在每个节点修补并重新启动后,请确认其完全恢复,然后再继续到下一个节点:
-
验证节点状态是否为
Ready:kubectl get nodeskubectl get nodes -
确认所有三个 etcd 成员均运行良好:
ETCD_CONTAINER="$(/var/lib/rancher/rke2/bin/crictl ps --name etcd --state Running -q | head -n1)" /var/lib/rancher/rke2/bin/crictl exec "$ETCD_CONTAINER" etcdctl \ --endpoints=https://127.0.0.1:2379 \ --cacert=/var/lib/rancher/rke2/server/tls/etcd/server-ca.crt \ --cert=/var/lib/rancher/rke2/server/tls/etcd/server-client.crt \ --key=/var/lib/rancher/rke2/server/tls/etcd/server-client.key \ endpoint health --clusterETCD_CONTAINER="$(/var/lib/rancher/rke2/bin/crictl ps --name etcd --state Running -q | head -n1)" /var/lib/rancher/rke2/bin/crictl exec "$ETCD_CONTAINER" etcdctl \ --endpoints=https://127.0.0.1:2379 \ --cacert=/var/lib/rancher/rke2/server/tls/etcd/server-ca.crt \ --cert=/var/lib/rancher/rke2/server/tls/etcd/server-client.crt \ --key=/var/lib/rancher/rke2/server/tls/etcd/server-client.key \ endpoint health --cluster -
在 RKE2 服务器日志中检查错误:
journalctl -u rke2-server -n 30journalctl -u rke2-server -n 30
内核升级
执行内核升级时,请在运行rke2-killall.sh之后、应用内核升级之前擦除 Containerd 快照存储。无论补丁顺序如何,这都可以防止任何节点上的 Containerd 状态损坏。
安装过程中创建的文件
系统在安装过程中将创建以下单元文件:
rke2-server.service(仅限服务器)- 启动rke2-server,这将启动服务器节点。rke2-agent.service(仅限代理)- 启动rke2-agent,这将启动代理节点。node-drain.service- 在关闭时使用。在关闭rke2-agent或rke2-server并执行排空之前执行。超时时间为 300 秒。node-uncordon.service- 在启动时用于取消封锁节点。var-lib-kubelet.mount- 由 fstab 生成器自动生成。var-lib-rancher-rke2-server-db.mount- 由 fstab 生成器自动生成。var-lib-rancher.mount- 由 fstab 生成器自动生成。
单元文件之间没有强依赖项。但是,node-drain 和 node-uncordon 具有 After=rke2-server.service 或 After=rke2-agent.service 指令。这意味着这些服务将在 rke2-server.service 之后启动。