UiPath Documentation
automation-suite
2.2510
true
Linux 版 Automation Suite 安装指南
重要 :
请注意,此内容已使用机器翻译进行了部分本地化。 新发布内容的本地化可能需要 1-2 周的时间才能完成。

启动和关闭节点

在 Automation Suite 中安全启动和关闭节点,涵盖手动和自动启动和关闭行为。

本页介绍 Automation Suite 的手动和自动启动和关闭行为。

重要提示:

您必须始终关闭一个节点,执行所需的操作,等待直到节点运行正常,然后关闭另一个节点以执行相同的操作。

下表描述了关闭集群服务或节点时可能遇到的不同场景。该表提供了针对每种情况您必须采取的详细操作,以及有关了解这些操作所导致的预期行为的指南。

场景

操作

预期行为

出于维护或任何其他原因,在不关闭节点的情况下关闭一个节点上的集群服务。

  1. 手动运行关闭步骤。

  2. 通过使用手动启动或重新启动计算机来重新启动服务。

在 HA 方案中,大多数服务将保持运行状态。节点启动后应不会出现任何问题,并且任何关闭的服务均应重新启动。

出于维护或任何其他原因,在不关闭节点的情况下关闭所有集群服务。

  1. 在所有节点上,从代理节点开始,手动运行关闭步骤。

  2. 从服务器节点开始,通过手动启动或重新启动计算机来重新启动服务。

服务将不可用。节点启动应不会出现问题。

正在关闭所有节点。

如果您的虚拟机监控程序管理门户(例如 VMware、AWS)允许服务在不强制终止计算机的情况下正常关闭,请执行正常关闭。默认情况下,systemd 子系统会允许有一个宽限期,以便在强制终止服务之前关闭服务。但是,如果您的系统覆盖了配置的关机时间,则可能会干扰正常关机。

例如,在 AWS 上,平台可以在两分钟后强制终止虚拟机。因此,必须手动关闭服务,因为节点排空可能需要长达 5 分钟的时间(这是正常关闭的要求)。

如果正常关闭,则节点启动时应不会出现问题。

如果集群关闭超过 6 小时并配置了 Kerberos 身份验证,您可能需要在重新启动后续订 Kerberos 票证。有关详细信息,请参阅“虚拟机重新启动后恢复 Kerberos 身份验证”

关闭单个节点。

如果您的虚拟机监控程序管理门户(例如 VMware、AWS)允许服务在不强制终止计算机的情况下正常关闭,请执行正常关闭。默认情况下,systemd 子系统会允许有一个宽限期,以便在强制终止服务之前关闭服务。但是,如果您的系统覆盖配置的关闭时间,则可能会干扰正常关闭。例如,在 AWS 上,平台可以在两分钟后强制终止虚拟机。因此,必须手动关闭服务,因为节点排空可能需要长达 5 分钟的时间(这是正常关闭的要求)。

如果未强制关闭过程,则节点重新启动应该不会出现任何问题。

强制终止服务器节点。

不适用。

在大多数情况下,节点会启动,但某些使用持久性数据的服务可能会出现问题。尽管这些问题通常可以恢复,但强烈建议您设置备份。

在原始节点重新联机之前,Insights Pod 不会重新启动,以防止潜在的数据丢失。如果节点无法恢复,请联系支持团队。

关闭行为

在关闭期间,systemd 会按照启动顺序停止服务。由于 node-drain 服务具有指令 After=rke2-server.serviceAfter=rke2-agent.service,因此它会在 rke2-service 关闭之前执行其关闭序列。这意味着在正确配置的系统中,只需正常关闭节点即可安全操作。

手动重新启动

如果您计划停止 rke2 服务并重新启动计算机,请执行以下步骤:

  1. 要确保集群在执行节点维护活动时正常运行,您必须将该节点上运行的工作负载排出到其他节点。要排空节点,请运行以下命令:

    systemctl stop node-drain.service
    systemctl stop node-drain.service
    
  2. 在节点上停止 Kubernetes 进程,具体取决于节点类型:

    • 在服务器节点上:
      systemctl stop rke2-server
      systemctl stop rke2-server
      
    • 在代理节点上:
      systemctl stop rke2-agent
      systemctl stop rke2-agent
      
  3. 终止 rke2 服务、Containerd 和所有子进程:

    rke2-killall.sh
    rke2-killall.sh
    

要下载rke2-killall.sh脚本,请参阅“安装包下载链接”。

启动行为

rke2-service 开头,在后面添加 node-drainernode-uncordonnode-drainer 在启动时不执行任何操作,仅返回服务已启动的确认信息。

node-uncordon 仅运行一次并启动 /opt/node-drain.sh nodestart,从而取消封锁节点。这属于停止行为时发生的排出程序,会封锁节点,使其无法调度。当 rke2 服务启动时,这种状态持续存在。因此,必须在 rke2-service 重新启动后取消封锁节点。

手动启动

该服务会随 Automation Suite 自动启动。但是,如果已手动停止 rke2-service,您必须通过运行以下命令再次启动该服务:

  1. 在节点上启动 Kubernetes 进程,具体取决于节点类型:

    • 在服务器节点上:
      systemctl start rke2-server
      systemctl start rke2-server
      
    • 在代理节点上:
      systemctl start rke2-agent
      systemctl start rke2-agent
      
  2. 启动 rke2 服务后,请取消封锁节点,以确保 Kubernetes 现在可以在此节点上计划工作负载:

    systemctl restart node-uncordon
    systemctl restart node-uncordon
    
  3. 启动节点后,您必须排空节点:

    systemctl start node-drain.service
    systemctl start node-drain.service
    
    重要提示:

    如果系统重新启动,跳过此步骤可能会导致 Kubelet 服务以不正常的方式关闭。

修补集群节点

修补或重新启动服务器节点时,应用更改的顺序直接影响集群的稳定性。

补丁前检查

在接触任何节点之前,请确认集群运行状况良好:

  1. 确认所有三个 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 --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 health --cluster
    
  2. 检查任何节点上是否存在崩溃循环:

    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"
    
  3. 验证是否存在最近的 etcd 快照:

    ls -lth /var/lib/rancher/rke2/server/db/snapshots/ | head -5
    ls -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

补丁程序顺序

始终先修补引导节点,然后再修补辅助节点。

重要提示:

首先修补引导节点,可确保在该节点出现故障时,两个辅助节点维持法定人数并推选新的领导者。然后,引导节点作为关注者处于干净状态重新加入。如果引导节点无法完全重新加入,则先修补辅助节点而最后修补引导节点可能会导致更广泛的不稳定。

在每个节点修补并重新启动后,请确认其完全恢复,然后再继续到下一个节点:

  1. 验证节点状态是否为Ready

    kubectl get nodes
    kubectl get nodes
    
  2. 确认所有三个 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 --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 health --cluster
    
  3. 在 RKE2 服务器日志中检查错误:

    journalctl -u rke2-server -n 30
    journalctl -u rke2-server -n 30
    

内核升级

执行内核升级时,请在运行rke2-killall.sh之后、应用内核升级之前擦除 Containerd 快照存储。无论补丁顺序如何,这都可以防止任何节点上的 Containerd 状态损坏。

安装过程中创建的文件

系统在安装过程中将创建以下单元文件:

  • rke2-server.service (仅限服务器)- 启动rke2-server ,这将启动服务器节点。
  • rke2-agent.service (仅限代理)- 启动rke2-agent ,这将启动代理节点。
  • node-drain.service - 在关闭时使用。在关闭rke2-agentrke2-server并执行排空之前执行。超时时间为 300 秒。
  • node-uncordon.service - 在启动时用于取消封锁节点。
  • var-lib-kubelet.mount - 由 fstab 生成器自动生成。
  • var-lib-rancher-rke2-server-db.mount - 由 fstab 生成器自动生成。
  • var-lib-rancher.mount - 由 fstab 生成器自动生成。

单元文件之间没有强依赖项。但是,node-drainnode-uncordon 具有 After=rke2-server.serviceAfter=rke2-agent.service 指令。这意味着这些服务将在 rke2-server.service 之后启动。

此页面有帮助吗?

连接

需要帮助? 支持

想要了解详细内容? UiPath Academy

有问题? UiPath 论坛

保持更新