跳到主要内容
版本:v2.6

节点和节点池

在 Rancher 中启动 Kubernetes 集群后,你可以从集群的节点选项卡管理各个节点。不同的配置集群选项对应不同的可用节点选项。

备注

如果你想管理 集群 而不是单个节点,请参阅编辑集群

每个集群创建选项的可用节点选项

下表列出了 Rancher 中每种集群类型的可用节点选项。单击选项列中的链接以获取每个功能的更多信息。

选项由基础设施提供商托管的节点自定义节点托管集群注册的 EKS 节点所有其他注册节点描述
封锁将节点标记为不可调度。
清空将节点标记为不可调度 并且 驱逐所有 pod。
编辑输入节点的自定义名称、描述、标签或污点。
查看 API查看 API 数据。
删除**从集群中删除有缺陷的节点。
下载密钥下载 SSH 密钥以通过 SSH 连接到节点。
节点缩放向上或向下扩展节点池中的节点数。

* 可通过 View API 访问的删除选项

由基础设施提供商托管的节点

托管在基础设施提供商中的节点上配置由 Rancher 启动的 Kubernetes 集群时,你可以使用节点池。

如果节点池被编辑,通过节点池选项配置的集群可以纵向扩容或缩容。

如果启用节点自动替换功能,节点池还可以自动维护在初始集群配置期间设置的节点规模。该规模决定了 Rancher 为集群维护的 active 节点的数量。

Rancher 使用节点模板来替换节点池中的节点。每个节点模板都使用云提供商凭证来允许 Rancher 在基础设施提供商中设置节点。

由托管 Kubernetes 提供商配置的节点

用于管理由 Kubernetes 提供商托管的节点的选项在 Rancher 中有些限制。例如,你不能使用 Rancher UI 向上或向下缩放节点数量,而是需要直接编辑集群。

注册节点

虽然你可以使用 Rancher 将工作负载部署到已注册集群,但你无法管理单个集群节点。导入的集群节点的所有管理都必须在 Rancher 之外进行。

管理和编辑单个节点

编辑节点可让你:

  • 更改其名称
  • 更改其描述
  • 添加标签
  • 添加/删除污点

要管理单个节点,请浏览到要管理的集群,然后从主菜单中选择节点。你可以通过单击节点的 (...) 图标来打开选项菜单。

在 Rancher API 中查看节点

选择此选项以查看节点的 API 端点

删除节点

使用 Delete 从云提供商中删除有缺陷的节点。

当你删除有缺陷的节点时,如果该节点在节点池中并启用了节点自动替换,Rancher 可以自动将其替换为具有相同配置的节点。

提示

如果你的集群由基础设施提供商托管,并且你希望缩容集群,而不是删除有缺陷的节点,请进行缩容而不是删除。

扩缩节点

对于由基础设施提供商托管的节点,你可以使用缩放控件来缩放每个节点池中的节点数量。此选项不适用于其他集群类型。

通过 SSH 连接到由基础设施提供商托管的节点

对于由基础设施提供商托管的节点,你可以选择下载其 SSH 密钥,以便从桌面远程连接到它。

  1. 在左上角,单击 ☰ > 集群管理

  2. 集群页面上,转到要通过 SSH 连接到节点的集群,然后单击集群名称。

  3. 主机池选项卡上,找到要远程访问的节点,然后单击 ⋮ > 下载 SSH 密钥。这将下载用于 SSH 的文件的 ZIP 包。

  4. 将 ZIP 文件解压缩到任何位置。

  5. 打开终端。转到解压了的 ZIP 文件的位置。

  6. 输入以下命令:

    ssh -i id_rsa root@<IP_OF_HOST>

封锁节点

封锁 节点表示将节点标记为不可调度。此功能适用于在短期维护(如重启,升级或停用)时在节点上执行短期任务。完成后,重新打开电源并通过取消封锁使节点再次可调度。

清空节点

清空 指的是先封锁节点,然后驱逐其所有 pod 的过程。此功能对于执行节点维护(如内核升级或硬件维护)很有用。它可以防止新的 pod 部署到节点,同时能重新分配现有的 pod,从而避免用户遇到服务中断的情况。

  • 具有副本集的 pod 将被一个新的 pod 替换,该新 pod 将被调度到一个新节点。此外,如果 pod 是服务的一部分,则客户端将自动重定向到新的 pod。

  • 对于没有副本集的 pod,你需要调出 pod 的新副本。如果该 pod 不是服务的一部分,将客户端重定向到它。

你可以清空处于 cordonedactive 状态的节点。清空一个节点时,该节点会被封锁,然后会评估节点是否满足清空的必备要求,如果满足要求,则会驱逐节点的 pod。

但是,你可以在启动清空时覆盖清空条件。你还有机会设置宽限期和超时值。

激进和安全的清空选项

为集群配置升级策略时,你将能够启用节点清空。如果启用了节点清空,你将能够配置如何删除和重新调度 pod。

  • 激进模式

    在这种模式下,即使 pod 没有控制器也不会被重新调度到新节点。Kubernetes 会认为你拥有自己的 pod 删除逻辑。

    Kubernetes 还会认为你有处理使用 emptyDir 的 pod 的实现。如果 Pod 使用 emptyDir 存储本地数据,你可能无法安全地删除该 pod,因为一旦 Pod 从节点中删除,emptyDir 中的数据将被删除。选择激进模式将删除这些 pod。

  • 安全模式

    如果一个节点有独立的 pod 或临时数据,它将被封锁但不会被清空。

宽限期

给每个 pod 清理的超时时间,从而让它们优雅地退出。例如,pod 可能需要完成任何未完成的请求、回滚事务或将状态保存到某个外部存储。如果该值为负数,将使用 pod 中指定的默认值。

超时

在清空放弃之前应该继续等待的时间。

Kubernetes 已知问题:

Kubernetes 1.12 之前的版本中,在清空节点时不会强制执行超时设置

清空和封锁状态

如果有任何与用户输入相关的错误,节点会由于清空失败进入 cordoned 状态。你可以更正输入并再次尝试清空节点,也可以通过解封节点来中止。

如果清空没有错误,则节点会进入 draining 状态。当节点处于此状态时,你可以选择停止清空,这将停止清空过程并将节点的状态更改为 cordoned

清空成功完成后,节点将处于 drained 状态。然后你可以关闭或删除节点。

有关封锁和清空的更多信息,请参阅 Kubernetes 文档

标记 Rancher 忽略的节点

某些解决方案(例如 F5 的 BIG-IP 集成)可能需要创建一个不会注册到集群的节点。

由于节点永远不会完成注册,因此它在 Rancher UI 中总是显示为不健康。

在这种情况下,你可能希望将节点标记为 Rancher 忽略的节点,从而让 Rancher 仅在节点实际发生故障时将节点状态显示为不健康。

你可以使用 Rancher UI 或 kubectl 标记要忽略的节点。

备注

已知一个未解决的问题,即标记为被忽略的节点可能会卡在更新状态。

使用 kubectl 标记要忽略的节点

要添加 Rancher 忽略的节点,请使用 kubectl 创建具有以下标签的节点:

cattle.rancher.io/node-status: ignore

结果:如果将节点添加到集群中,Rancher 将不会尝试与该节点同步。该节点仍然可以是集群的一部分,并且可以使用 kubectl 列出。

如果在将节点添加到集群之前添加了标签,则该节点将不会显示在 Rancher UI 中。

如果在将节点添加到 Rancher 集群后添加标签,则不会从 UI 中删除该节点。

如果你使用 Rancher UI 或 API 从 Rancher server 中删除节点,假如 nodeName 在 Rancher API 下的 v3/settings/ignore-node-name 中列出,则不会从集群中删除该节点。