本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。

节点和机器池

在Rancher中启动Kubernetes集群后,您可以从集群的*节点*选项卡管理单个节点。

  1. 点击左上角的*☰*。

  2. 选择*集群管理*。

  3. 找到您想要管理节点的集群,并点击行末的*探索*按钮。

  4. 从左侧导航中选择*节点*。

根据用于配置集群的选项,可用的节点选项不同。

如果您想管理_集群_而不是单个节点,请参见xref:[编辑集群]。

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

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

选项 由基础设施提供商托管的节点 自定义节点 托管集群 注册的EKS节点 所有其他注册节点 说明

隔离

将节点标记为不可调度。

排空

将节点标记为不可调度_并_驱逐所有Pod。

编辑

输入节点的自定义名称、描述、标签或污点。

查看API

查看API数据。

删除

*

*

从集群中删除有缺陷的节点。

下载密钥

下载SSH密钥以便通过SSH连接到节点。

节点扩展

增加或减少节点池中的节点数量。

  • 通过查看API访问的删除选项

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

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

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

在Rancher中,由Kubernetes提供商托管的节点管理选项有些有限。与其使用Rancher UI进行编辑(例如增加或减少节点数量),不如直接编辑集群。

注册的节点

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

管理和编辑单个节点

编辑节点可以让您:

  • 更改其名称

  • 更改其描述

  • 添加 标签

  • 添加/移除 污点

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

在 Rancher API 中查看节点

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

删除节点。

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

当您删除一个有缺陷的节点时,如果该节点在机器池中并且 启用了自动替换,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 的新副本,并假设它不是服务的一部分,将客户端重定向到它。

您可以排空处于 cordonedactive 状态的节点。当您排空节点时,该节点会先被隔离,并评估是否满足排空条件,然后(如果满足条件)驱逐其 Pod。

但是,您可以在启动排空时覆盖排空条件。您还可以设置宽限期和超时值。

激进和安全的排空选项

当您为集群配置升级策略时,可以启用节点排空。如果启用了节点排空,您可以配置 Pod 的删除和重新调度方式。

  • 激进模式

    在此模式下,即使 Pod 没有控制器,也不会将其重新调度到新节点。Kubernetes 期望您拥有自己的逻辑来处理这些 pod 的删除。

    Kubernetes 还期望实现能够决定如何处理使用 emptyDir 的 pod。如果一个 pod 使用 emptyDir 存储本地数据,您可能无法安全地删除它,因为一旦 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 服务器删除该节点,且在 Rancher API 的 Rancher 设置下的 nodeName 中列出了 v3/settings/ignore-node-name,则该节点不会从集群中去除。