更新集群、工作程序节点和集群组件
请按照正确的顺序更新主节点、工作节点和集群组件,以确保集群的安全并获得技术支持。 如果更新顺序不正确,可能会导致版本不一致导致的故障或意外停机。
请按以下顺序完成更新:
- 更新集群主节点。
- 更新您的工作节点—— Classic、VPC 或 Satellite — 具体取决于您的基础设施类型。 不确定您的是哪种类型? 在 IBM Cloud 控制台中,单击您的集群,然后查看“概览”选项卡中的 “基础设施” 字段——该字段会显示 “经典”、“VPC” 或 Satellite。
- 更新集群组件 例如 Fluentd 和 Ingress ALB,如果您是手动管理它们的话。
- 更新受管附加组件。
更新主节点
- 我该如何判断何时需要更新主服务器?
- 当更新可用时,将在控制台,声明和 CLI 中通知您。 您还可以定期检查 受支持的版本页面。
- 主分支最多可以比最新版本落后几个版本?
- 只能将 API 服务器更新到其当前版本 (
n+1) 之前的下一个版本。 - 我的工作节点能否运行比主节点更高版本的软件?
- 您的工作节点无法运行比主节点更新的
major.minorKubernetes 版本。 此外,您的工作节点版本只能比主节点版本低一个次版本(n-1)。首先,请将主节点更新 至最新版本 Kubernetes。 然后,在集群中更新工作程序节点。
工作程序节点运行的补丁版本可以高于主节点,例如特定于工作程序节点以用于安全性更新的补丁版本。
- 补丁更新是如何应用的?
- 缺省情况下,主节点补丁更新会自动应用,但需要若干天时间,因此主节点补丁版本可能会在应用于主节点之前显示为可用。 自动更新还会跳过运行状况欠佳或当前有操作正在执行的集群。 有时,IBM 可能会对特定主节点修订包禁用自动更新,例如仅当主节点从一个次版本更新到另一个次版本时才需要的补丁。 在上述任何一种情况下,您都可以查看 Red Hat OpenShift on IBM Cloud 的版本信息,了解可能产生的影响,并选择自行安全地使用
ibmcloud oc cluster master update命令,而无需等待更新自动化机制生效。
与主节点不同的是,您必须为工作程序更新每个补丁版本。
- 主服务器更新期间会发生什么?
- 主节点具有高可用性,有三个副本主节点 pod。 主节点 pod 采用滚动更新,在此期间,一次只有一个 pod 不可用。 在更新期间会有两个实例启动且正在运行,以便您可以访问和更改集群。 工作程序节点、应用程序和资源会继续运行。
- 我可以回滚这次更新吗?
- 不,更新过程完成后,无法将集群回滚到之前的版本。 请确保使用测试集群并按照指示信息来解决潜在问题,然后再更新生产主节点。
- 我该按照什么流程来更新主数据?
- 下图显示更新主节点时可以执行的流程。
更新集群主节点的步骤
开始之前,请确保您拥有 “操作员”或 “管理员”IAM平台访问角色。 如果您不确定自己的访问角色,请在 IBM Cloud 控制台中转至 “管理”→“访问(IAM)”→“用户”, 或咨询您的账户管理员。
如果证书颁发机构(CA)的证书轮换正在进行中,则主更新将被阻止,直到轮换完成为止。 开始之前,请先检查任何正在进行的轮换状态。
要更新 Red Hat OpenShift 的_主版本号_或_次_版本号:
-
查看 Red Hat OpenShift on IBM Cloud 版本信息,并将任何更新标记为 在主节点之前更新。
-
查看任何 Kubernetes 有用的警告,例如废弃声明。
-
请检查集群中安装的附加组件和插件,以了解更新集群版本可能造成的任何影响。
-
正在检查附加组件
- 列出集群中的附加组件。
ibmcloud oc cluster addon ls --cluster CLUSTER - 检查所安装的每个附加组件的受支持 Red Hat OpenShift 版本。
ibmcloud oc addon-versions - 如果必须更新附加组件以在要将集群更新到的 Red Hat OpenShift 版本中运行,请 更新附加组件。
- 列出集群中的附加组件。
-
检查插件
- 在 Helm 目录中,找到已安装在集群中的插件。
- 从侧边菜单中,展开 源和 TAR 文件 部分。
- 下载并打开源代码。
- 请检查
README.md或RELEASENOTES.md文件以获取受支持的版本。 - 如果必须更新插件才能在要更新集群的 Red Hat OpenShift 版本中运行,请遵循插件指示信息来更新插件。
-
-
使用 IBM Cloud 控制台或运行 CLI
ibmcloud oc cluster master update命令来更新 API 服务器和关联的主节点组件。 -
稍等几分钟,然后确认更新是否已完成。 在 IBM Cloud 集群仪表板上查看 API 服务器版本,或运行
ibmcloud oc cluster ls。 -
安装与主节点中运行的 API 服务器版本相匹配的
oc cli版本。 Kubernetes 不支持与服务器版本相差两个或更多版本(n ± 2)的oc客户端版本。 要刷新本地配置,请运行ibmcloud oc cluster config -c CLUSTER_NAME_OR_ID,然后通过oc version --client进行验证。
主节点更新完成后,请更新您的工作节点。 具体方法取决于您的基础设施类型:
- 更新经典工作节点 ——使用由 ConfigMap 和
worker update命令控制的滚动更新。 - 更新 VPC 工作节点 — VPC 裸机工作节点可通过
worker reload进行就地更新;VPC VSI 工作节点必须使用worker replace --update。 ConfigMap 的滚动更新流程目前尚不支持VPC工作节点。
更新经典工作程序节点
经典基础设施工作节点会在原地执行滚动更新。 更新由 Kubernetes ( ConfigMap )控制,该配置文件定义了同时最多允许多少个节点不可用。 ibmcloud oc worker update 命令仅支持经典工作节点。
您可以进行两种类型的更新:
- 补丁:应用安全修复程序,并将版本更新至最新补丁版本。 请访问
ibmcloud oc worker reload或ibmcloud oc worker update。 这两个命令都会将节点更新到最新的补丁版本。update命令还会同时应用任何可用的major.minor版本更新,使其与master分支保持一致。 - Major.minor: 将工作节点 Kubernetes 的版本升级,使其与主节点保持一致。 您的工作节点与主节点的版本差异最多只能落后一个版本(
n-1)。请使用ibmcloud oc worker update命令。
有关更多信息,请参阅更新类型。
每次更新工作节点时,轮换 CA 证书 都是一个很好的做法,因为证书轮换的最长步骤包括重新加载或更换工作节点。
- 更新期间我的应用会怎样?
- 在已更新的工作节点上运行的应用程序会被重新调度到集群中的其他工作节点上——包括不同工作池中的节点或独立工作节点。 为避免系统停机,请在开始更新之前确保集群具有足够的容量来承载该工作负载。
- 如何控制在更新或重新加载期间,每次停机的 worker 节点数量?
- 使用 Kubernetes ConfigMap 来设置同一时间最多允许有多少个工作节点不可用。 工作节点通过其标签进行标识。 您可以使用 IBM 提供的标签或自定义标签。 如果您需要确保所有工作节点保持可用,请考虑 调整工作节点池的大小,或者在更新前 添加独立的工作节点 以临时增加处理能力。
ConfigMap 仅控制更新行为。 这不会影响工作节点的重新加载,工作节点的重新加载会在收到请求后立即进行。
- 如果我选择不定义配置映射,会怎样?
- 默认情况下,在更新过程中,每个集群中最多允许 20% 的所有工作节点不可用。 您可以通过定义一个包含
defaultcheck.json条目的 ConfigMap 来覆盖此值。
先决条件
在更新经典基础设施的工作节点之前,请先完成以下先决条件步骤。
在工作节点更新过程中,工作节点机器将重新安装操作系统镜像,所有未 存储在持久化存储中的 数据都将被永久删除。 在开始之前,请确认所有需要保留的数据都已存储在工作节点之外。
如果您的集群中安装了 Portworx,则必须执行 在更新工作节点之前,请先更新您的 Portworx 配置。
更新前的操作(请按顺序完成)
- 请查阅 Red Hat OpenShift on IBM Cloud 的版本信息,了解最新的安全补丁和必需的更改。
- 请按照《 Red Hat OpenShift 版本准备指南 》中标记为 “在主分支之前更新”或 “在主分支之后更新”的说明进行相应修改。
- 在更新工作节点之前,请先更新主节点。 工作节点的版本不能高于在主节点上运行的API服务器版本。
- 访问 Red Hat OpenShift 集群。
- 建议在集群中 添加工作节点,以便在更新期间为工作负载重调度提供额外容量。 更新完成后,您可以删除多余的节点。
必需的许可权
请确保您拥有 “操作员”或 “管理员”IAM 平台访问角色。 如果您不确定自己的访问角色,请在 IBM Cloud 控制台中转至 “管理”→“访问(IAM)”→“用户”, 或咨询您的账户管理员。
在 CLI 中使用配置映射更新经典工作程序节点
使用 ConfigMap 对经典工作节点进行滚动更新。 通过 ConfigMap,您可以控制每个区域或区域内同时不可用的节点数量。 如果默认的 20% 不可用性规则对您的集群来说可以接受,则可以跳过步骤 3 和 4(创建 ConfigMap ),直接进入步骤 5,使用默认行为应用更新。
-
完成必备步骤。
-
列出可用的工作程序节点,并记录其专用 IP 地址。
ibmcloud oc worker ls --cluster CLUSTER -
查看工作程序节点的标签。 可以在 CLI 输出的 Labels 部分找到工作程序节点标签。 每个标签都由
NodeSelectorKey和NodeSelectorValue组成。oc describe node PRIVATE-WORKER-IP示例输出
NAME: 10.184.58.3 Roles: <none> Labels: arch=amd64 beta.kubernetes.io/arch=amd64 beta.kubernetes.io/os=linux failure-domain.beta.kubernetes.io/region=us-south failure-domain.beta.kubernetes.io/zone=dal12 ibm-cloud.kubernetes.io/encrypted-docker-data=true ibm-cloud.kubernetes.io/iaas-provider=softlayer ibm-cloud.kubernetes.io/machine-type=u3c.2x4.encrypted kubernetes.io/hostname=10.123.45.3 privateVLAN=2299001 publicVLAN=2299012 Annotations: node.alpha.kubernetes.io/ttl=0 volumes.kubernetes.io/controller-managed-attach-detach=true CreationTimestamp: Tue, 03 Apr 2022 15:26:17 -0400 Taints: <none> Unschedulable: false -
创建配置映射,并定义工作程序节点的不可用性规则。 ConfigMap 最多支持 15 个命名检查。 每次检查都会根据标签锁定一组工作节点,并设定这些节点中同时不可用的最大比例。 以下示例展示了区域检查(
zonecheck.json)、区域检查(regioncheck.json)、默认回退检查(defaultcheck.json)以及自定义检查的模板。 对于每次检查,请从上一步中检索到的 worker 节点标签中选择一个,以标识目标节点。对于每个检查项,
NodeSelectorKey和NodeSelectorValue只能设置一个值。 如果要为多个区域、专区或其他工作程序节点标签设置规则,请创建新的检查。 在配置映射中最多可定义 15 个检查项。 如果添加更多检查,那么一次仅会重新装入 1 工作程序节点,直到更新所有请求的工作程序为止。示例
apiVersion: v1 kind: ConfigMap metadata: name: ibm-cluster-update-configuration namespace: kube-system data: drain_timeout_seconds: "120" zonecheck.json: | { "MaxUnavailablePercentage": 30, "NodeSelectorKey": "failure-domain.beta.kubernetes.io/zone", "NodeSelectorValue": "dal13" } regioncheck.json: | { "MaxUnavailablePercentage": 20, "NodeSelectorKey": "failure-domain.beta.kubernetes.io/region", "NodeSelectorValue": "us-south" } defaultcheck.json: | { "MaxUnavailablePercentage": 20 } <check_name>: | { "MaxUnavailablePercentage": <value_in_percentage>, "NodeSelectorKey": "<node_selector_key>", "NodeSelectorValue": "<node_selector_value>" }drain_timeout_seconds- 可选:等待 排水完成的超时时间(以秒为单位)。 排空工作程序节点可安全地从工作程序节点中除去所有现有 pod,然后将这些 pod 重新安排到集群中的其他工作程序节点上。 接受的值为范围在 1 到 180 之间的整数。 缺省值为 30。
zonecheck.json和regioncheck.json- 两个复选框,用于为一组工作节点定义规则,您可以通过指定的
NodeSelectorKey和NodeSelectorValue来识别这些节点。zonecheck.json根据工作节点(worker node)的区域标签来识别这些节点,而regioncheck.json则使用在配置过程中添加到每个工作节点上的区域标签。 在此示例中,在更新期间,所有区域标签为dal13的工作节点中有30%,以及所有位于us-south的工作节点中有20%可能不可用。 defaultcheck.json- 如果您未创建配置映射,或者映射配置有误,则将应用 Kubernetes 的默认设置。 缺省情况下,集群中只能有 20% 的工作程序节点同时不可用。 您可以通过向配置映射添加缺省检查来覆盖缺省值。 在此示例中,凡是在区域和区域检查(
dal13或us-south)中未被指定的每个工作节点,在更新期间都可能处于不可用状态。 MaxUnavailablePercentage- 对于指定的标签键和值,允许不可用的最大节点数,指定为百分比。 工作程序节点在部署、重新装入或供应过程中会不可用。 如果排队的工作程序节点超过任何定义的最大不可用百分比,那么会阻止这些节点更新。
NodeSelectorKey- 要为其设置规则的工作程序节点的标签键。 可以为 IBM 提供的缺省标签以及您创建的工作程序节点标签设置规则。 如果您想为属于某个工作节点池的工作节点添加一条规则,可以使用
ibm-cloud.kubernetes.io/machine-type标签。 NodeSelectorValue- 必须为定义的规则考虑工作程序节点的标签值。
-
在集群中创建配置映射。
oc apply -f <filepath/configmap.yaml> -
验证配置映射是否已创建。
oc get configmap --namespace kube-system -
更新工作程序节点。
ibmcloud oc worker update --cluster CLUSTER --worker WORKER-NODE-1-ID --worker WORKER-NODE-2-ID -
可选:验证由配置映射触发的事件以及发生的任何验证错误。 可以在 CLI 输出的 Events 部分中查看这些事件。
oc describe -n kube-system cm ibm-cluster-update-configuration -
通过复查工作程序节点的 Kubernetes 版本,确认更新是否已完成。
oc get nodes -
请确认没有重复的工作节点。 有时,较旧的集群会列出具有重复
NotReady状态。 要除去重复项,请参阅故障诊断。
后续步骤
-
对其他工作程序池重复更新过程。
-
请通知该集群中的所有开发人员,将他们的
ocCLI 更新 为与 Kubernetes 主分支版本一致。 不支持运行与服务器版本相差两个或更多版本的oc客户端,此操作可能会导致意外错误。 -
如果 Kubernetes 仪表板未显示利用率图形,请删除
kube-dashboardpod。
在控制台中更新经典工作程序节点
首次配置 ConfigMap 后,您可以通过 IBM Cloud 控制台更新工作节点。 该控制台会遵守您在《 ConfigMap 》中定义的不可用规则。
- 完成 先决条件步骤,并 配置一个 ConfigMap 来控制工作节点的更新方式。
- 从 IBM Cloud 控制台 菜单
,单击容器 > 集群。
- 在集群页面中,单击您的集群。
- 在 “工作节点”选项卡中,选中要更新的每个工作节点的复选框。 在表标题行的上方显示有操作栏。
- 在操作栏中,单击更新。
如果您的集群中安装了 Portworx,则必须在已更新的工作节点上重启 Portworx Pod。 如需了解更多信息,请参阅《 Portworx 限制 》。
更新 VPC 工作程序节点
VPC 工作节点的更新方式因其类型和集群平台而异。 对于任何 VPC 工作节点,都不支持 ibmcloud oc worker update 命令。 在任何情况下,都必须先更新集群主节点。
- VPC 裸机工作人员:使用
ibmcloud oc worker reload进行就地更新。 该节点保留其IP地址。 - VPC 虚拟服务器实例 (VSI) 工作进程:已替换为
ibmcloud oc worker replace --update(以匹配主分支版本)或ibmcloud oc worker replace(仅更新补丁)。 旧节点已被删除,并已配置了一个新节点。
您可以进行两种类型的更新:
- 补丁:将安全修复程序和更新应用到当前 BOM 版本的最新补丁中。 对于 VPC 裸机工作人员,请访问
ibmcloud oc worker reload。 对于 VPC VSI 工作人员,请使用ibmcloud oc worker replace。 - Major.minor: 将工作节点 Kubernetes 的版本升级,使其与主节点保持一致。 您的工作节点版本最多可比主节点落后一个版本(
n-1)。对于 VPC 裸金属工作节点,请使用ibmcloud oc worker reload。 对于 VPC VSI 工作人员,请访问ibmcloud oc worker replace --update。
每次更新工作节点时,轮换 CA 证书 都是一个很好的做法,因为证书轮换的最长步骤包括重新加载或更换工作节点。
若已在集群中部署了 OpenShift 数据基础架构,请按照步骤 使用 OpenShift 数据基础架构更新 VPC 工作节点。
- 更新期间我的应用会怎样?
- 在已更新的工作节点上运行的应用程序将被重新调度到集群中的其他工作节点上。 这些工作程序节点可能位于其他工作程序池中。 为避免系统停机,请在开始更新之前确保集群拥有足够的容量来承载工作负载。 有关更多信息,请参阅 将工作程序节点添加到经典集群 或 将工作程序节点添加到 VPC 集群。
- 更新期间,我的工作节点会发生什么变化?
- 对于 VPC 裸机工作节点,将使用
worker reload`` 命令就地重新加载工作节点。 该节点保留其 IP 地址;本地磁盘上的数据将被删除,必须存储在工作节点之外。 对于 VPC 虚拟服务器实例 (VSI) 工作节点,其替换方式是:先移除旧的工作节点,然后部署一个运行更新补丁或major.minor版本的新工作节点。 替换工作程序节点在同一专区、同一工作程序池中创建,并且其类型模板与删除的工作程序节点相同。 不过,替换后的工作节点会被分配一个新的私有 IP 地址,并且会丢失您为旧工作节点设置的任何自定义标签或污点(工作池的标签和污点仍会应用于替换后的工作节点)。 - 如果我同时更换多个工作程序节点会怎样?
- 如果同时替换多个工作程序节点,那么将同时删除并替换这些节点,而不是逐个进行替换。 在更换工作程序节点之前,请确保集群中有足够的容量来重新调度工作负载。
- 如果未创建替换工作程序节点,该怎么办?
- 如果工作程序池未启用 自动重新平衡,那么不会创建替换工作程序节点。
先决条件
在更新 VPC 基础设施的工作节点之前,请先完成以下先决条件步骤。
对于 VPC VSI 工作节点,该工作节点将被删除并替换为一个新节点。 对于 VPC 裸机工作人员而言,节点将在原地重新加载。 在这两种情况下,未 存储在持久化存储中的 数据都会被永久删除。 在开始之前,请确认所有需要保留的数据都已存储在工作节点之外。
如果您已在集群中部署了 Portworx,请按照以下步骤 将VPC工作节点更新为使用 Portworx 卷,而不是按照本页上的步骤操作。
更新前的操作(请按顺序完成)
- 请查阅 Red Hat OpenShift on IBM Cloud 的版本信息,了解最新的安全补丁和必需的更改。
- 请按照《 Red Hat OpenShift 版本准备指南 》中标记为 “在主分支之前更新”或 “在主分支之后更新”的说明进行相应修改。
- 在更新工作节点之前,请先更新主节点。 工作节点的版本不能高于在主节点上运行的API服务器版本。
- 访问 Red Hat OpenShift 集群。
必需的许可权
请确保您拥有 “操作员”或 “管理员”IAM 平台访问角色。 如果您不确定自己的访问角色,请在 IBM Cloud 控制台中转至 “管理”→“访问(IAM)”→“用户”, 或咨询您的账户管理员。
在 CLI 中更新 VPC 工作程序节点
完成以下步骤以使用 CLI 更新工作程序节点。
- 完成必备步骤。
- 可选:通过调整工作节点池的大小来扩展集群的容量。 工作程序节点上的 pod 可以重新安排,并且这些 pod 在更新期间继续在添加的工作程序节点上运行。 有关更多信息,请参阅 将工作程序节点添加到经典集群 或 将工作程序节点添加到 VPC 集群。
- 列出集群中的工作程序节点,并记下要更新的工作程序节点的 ID 和 Primary IP。
ibmcloud oc worker ls --cluster CLUSTER - 更新工作节点。 应使用的命令取决于工作节点的类型。
VPC 裸机工作节点:使用 worker reload 对节点进行就地重映像。 该节点保留其IP地址,并已更新至最新补丁版本。
```sh {: pre}
ibmcloud oc worker reload --cluster CLUSTER --worker WORKER-NODE-ID
```
**VPC 虚拟服务器实例 (VSI) 工作节点**:使用 `worker replace` 命令,更新与主版本匹配的补丁版本或 `major.minor` 版本。
* 要将工作程序节点更新为与主节点相同的 `major.minor` 版本,请包含 `--update` 选项。
```sh {: pre}
ibmcloud oc worker replace --cluster CLUSTER --worker WORKER-NODE-ID --update
```
* 要将工作程序节点更新为同一 `major.minor` 版本的最新补丁版本,请不要包含 `--update` 选项。
```sh {: pre}
ibmcloud oc worker replace --cluster CLUSTER --worker WORKER-NODE-ID
```
- 对必须更新的每个工作程序节点重复上述步骤。
- 可选:在替换后的工作节点进入 “就绪” 状态后,调整工作节点池的大小,以满足您所需的集群容量。 有关更多信息,请参阅 将工作程序节点添加到 VPC 集群。
若您在 VPC 集群中 Portworx 运行,则必须 手动将 Block Storage for VPC 卷附加到新的工作节点。
VPC 裸机工作节点重新加载期间的固件更新
当您重新加载 VPC 裸机工作节点时,IBM Cloud 基础设施会自动检查该服务器是否有待处理的固件更新,并在重新加载过程中将其应用。 无需采取任何额外操作即可触发固件更新。
在重新加载 VPC 裸机工作节点时,请注意以下事项:
- 重新加载时间延长
- 如果在重新加载过程中进行了固件更新,总重新加载时间可能会比通常的重新加载时间显著增加——增加30分钟或更长时间。 请据此规划您的维护窗口。
- 无法提前查看待处理的更新
- 在执行 reload 命令之前,无法得知某个工作节点是否正在等待固件更新。
- 数据丢失风险
- 与所有 VPC 裸机工作节点的重装操作一样,无论是否应用固件更新,重装过程中本地磁盘上的数据都会被删除。 在重新加载之前,请备份所有未存储在持久化存储中的数据。
- 因固件更新导致的重新加载失败
- 在某些情况下,固件更新可能会失败,导致工作节点进入
reload_failed状态(Failed to reload worker),状态详情为The infrastructure firmware update has failed. (P4056)。 如果出现这种情况:- 请等待几分钟,然后再次运行
ibmcloud oc worker reload --cluster CLUSTER --worker WORKER-NODE-ID来重新加载。 - 如果尝试2至3次后错误仍未解决,请提交 IBM Cloud 支持工单。
- 请等待几分钟,然后再次运行
在控制台中更新 VPC 工作程序节点
可以在控制台中更新 VPC 工作程序节点。 开始之前,请考虑 添加工作程序节点 到集群,以帮助避免应用程序的停机时间。
“更新” 操作的具体作用取决于工作节点类型和集群平台:
- VPC 裸机工作者:节点已就地重新加载。 未配置任何替换节点。
- VPC 虚拟服务器实例 (VSI) 工作节点:工作节点将被更新版本中的新节点替换。
- 完成必备步骤。
- 从 IBM Cloud 控制台 菜单
,单击容器 > 集群。
- 在集群页面中,单击您的集群。
- 在 “工作节点”选项卡中,选中要更新的每个工作节点的复选框。 在表标题行的上方显示有操作栏。
- 在操作栏中,单击更新。
更新类型模板(机器类型)
当您需要不同的计算资源时(例如,更多内存、额外的 CPU 或配备 GPU 的机器),请更新工作节点的配置(机器类型)。 更新“flavor”会创建一个具有新“flavor”的新的工作进程池,然后移除旧的工作进程池。 由于此过程会替换节点,因此工作节点上所有未存储在持久化存储中的数据都将被永久删除。
准备工作
- 访问 Red Hat OpenShift 集群。
- 请确认需要保留的任何数据都已存储在工作节点之外的 持久化存储 中。 仅存储在工作节点上的数据将丢失且无法恢复。
- 请确保您拥有 “操作员”或 “管理员”IAM 平台访问角色。 如果您不确定自己的访问角色,请在 IBM Cloud 控制台中转至 “管理”→“访问(IAM)”→“用户”, 或咨询您的账户管理员。
更新风味
-
列出可用的工作程序节点,并记录其专用 IP 地址。
- 列出集群中的可用工作程序池。
ibmcloud oc worker-pool ls --cluster CLUSTER ``` 2. 列出工作程序池中的工作程序节点。 记下 **ID** 和 **Private IP**。 ```sh {: pre} ibmcloud oc worker ls --cluster CLUSTER --worker-pool WORKER-POOL ``` 3. 获取工作程序节点的详细信息。 在输出中,记下区域以及经典集群的专用和公用 VLAN 标识或 VPC 集群的子网标识。 ```sh {: pre} ibmcloud oc worker get --cluster CLUSTER --worker WORKER-ID ``` -
列出专区中可用的类型模板。
ibmcloud oc flavors --zone <zone> -
创建具有新机器类型的工作程序节点。
- 创建工作程序池,其中的工作程序节点数与要替换的节点数相同。
- 经典集群:
ibmcloud oc worker-pool create classic --name WORKER-POOL --cluster CLUSTER --flavor FLAVOR --size-per-zone NUMBER-OF-WORKERS-PER-ZONE - VPC 生成 2 集群:
ibmcloud oc worker-pool create vpc-gen2 --name NAME --cluster CLUSTER --flavor FLAVOR --size-per-zone NUMBER-OF-WORKERS-PER-ZONE --label LABEL
- 经典集群:
- 验证工作程序池是否已创建。
ibmcloud oc worker-pool ls --cluster CLUSTER ``` 3. 将专区添加到先前检索到的工作程序池。 添加专区时,工作程序池中定义的工作程序节点将在专区中供应,并考虑用于未来的工作负载安排。 如果要跨多个专区分布工作程序节点,请选择 [经典](/docs/openshift?topic=openshift-regions-and-zones#zones-mz) 或 [VPC](/docs/openshift?topic=openshift-regions-and-zones#zones-vpc) 多专区位置。 * 经典集群: ```sh {: pre} ibmcloud oc zone add classic --zone ZONE --cluster CLUSTER --worker-pool WORKER-POOL --private-vlan PRIVATE-VLAN-ID --public-vlan PUBLIC-VLAN-ID ``` * VPC 集群: ```sh {: pre} ibmcloud oc zone add vpc-gen2 --zone ZONE --cluster CLUSTER --worker-pool WORKER-POOL --subnet-id VPC-SUBNET-ID ``` - 创建工作程序池,其中的工作程序节点数与要替换的节点数相同。
-
等待工作程序节点进行部署。 工作程序节点的状态更改为 Normal 时,说明部署完成。
ibmcloud oc worker ls --cluster CLUSTER -
删除旧的工作进程池。 如果您要取消“Classic”裸机版本(按月计费),即使在当月月中取消,仍需支付当月的全额费用。 VPC 实例(包括裸机实例)按小时计费。
- 除去具有旧机器类型的工作程序池。 除去工作程序池将除去所有专区中该池中的所有工作程序节点。 此过程可能需要几分钟才能完成。
ibmcloud oc worker-pool rm --worker-pool WORKER-POOL --cluster CLUSTER ``` 2. 验证工作程序池是否已除去。 ```sh {: pre} ibmcloud oc worker-pool ls --cluster CLUSTER ``` -
验证工作程序节点是否已从集群中除去。
ibmcloud oc worker ls --cluster CLUSTER -
重复这些步骤以将其他工作程序池或独立工作程序节点更新为不同的类型模板。
如何缩减工作程序池?
本节介绍了在缩容过程中(例如在更新工作节点后,或者运行 ibmcloud oc worker-pool resize 时。 您无需配置此行为——它会自动发生。
当工作节点池中的工作节点数量减少时,系统会根据状态、健康状况和版本等若干属性,优先删除相应的工作节点。
此优先级逻辑与自动缩放器附加组件无关。
下表显示了要删除的工作程序节点的优先顺序。
您可以运行 ibmcloud oc worker ls 命令以查看表中列出的所有工作程序节点属性。
| 优先级 | 属性 | 描述 |
|---|---|---|
| 1 | 工作程序节点状态 | 处于非工作状态或低工作状态的工作程序节点将被划分优先级以进行移除。 此列表显示从最高优先级到最低优先级排序的状态: provision_failed,deploy_failed,deleting,provision_pending,provisioning,deploying,provisioned,reloading_failed,reloading 和 deployed。 |
| 2 | 工作程序节点运行状况 | 运行状况不佳的工作程序节点优先于运行状况正常的工作程序节点。 此列表显示从最高优先级到最低优先级排序的运行状况状态: critical,warning,pending,unsupported 和 normal。 |
| 3 | 工作程序节点版本 | 在较旧版本上运行的工作程序节点具有更高的删除优先级。 |
| 4 | 选择的安置设置 | 仅适用于在专用主机上运行的工作程序。 在 DesiredPlacementDisabled 选项设置为 true 的专用主机上运行的工作程序节点具有更高的删除优先级。 |
| 5 | 字母顺序 | 根据以上列出的因素对工作程序节点进行优先级划分后,将按字母顺序删除这些工作程序节点。 请注意,根据工作程序节点标识约定,经典集群和 VPC 集群上工作程序的标识与年龄相关,因此将首先除去较旧的工作程序节点。 |
更新集群组件
Red Hat OpenShift on IBM Cloud 集群随附在供应集群时自动安装的组件,例如 Ingress。 缺省情况下,IBM 会自动更新这些组件。 但是,您可以禁用某些组件的自动更新,而单独从主节点和工作程序节点手动更新这些组件。
- 有哪些默认组件可以独立于集群进行更新?
- 您可以选择禁用以下组件的自动更新:
- 是否有某些组件无法脱离集群单独进行更新?
- 是。 您的集群部署了以下受管组件及相关资源,这些组件和资源无法进行修改,但为了获得某些性能优势而对 Pod 进行扩展或编辑 ConfigMap 除外。 如果尝试更改下列其中一个部署组件,那么在使用集群主节点定期更新这些部署组件的原始设置时,其原始设置会复原。 但是,请注意,不会更新创建的与这些组件关联的资源,例如,您创建以由 Calico 部署组件实施的 Calico 网络策略。
calico组件coredns组件ibm-cloud-provider-ipibm-file-pluginibm-keepalived-watcheribm-master-proxyibm-storage-watcherkubernetes-dashboard组件metrics-serverolm-operator和catalog组件 (1.16 和更高版本)vpn
- 除了默认组件之外,我还可以安装其他插件或扩展吗?
- 是的。Red Hat OpenShift on IBM Cloud 提供了其他插件和扩展程序,您可以从中选择,为您的集群添加功能。 例如,您可能希望在集群中启用由 IBM 管理的外挂程序。 您必须按照 更新托管附加组件 的步骤分别更新这些附加组件。
管理 Fluentd 的自动更新
当您为集群中的某个源创建日志记录配置以转发至外部服务器时,集群中将创建一个 Fluentd 组件。 若要更改日志记录或过滤器配置,Fluentd 组件必须为最新版本。 缺省情况下,会启用组件的自动更新。
要运行以下命令,您必须拥有该集群的 “管理员 IBM Cloud”IAM平台访问角色。
您可以通过以下方式来管理 Fluentd 组件的自动更新。
- 运行
ibmcloud oc logging autoupdate get --cluster CLUSTER命令,检查自动更新是否已启用。 - 通过运行
ibmcloud oc logging autoupdate disable命令来禁用自动更新。 - 如果禁用了自动更新,但您需要对配置进行更改,那么有两个选项:
- 启用 Fluentd pod 的自动更新。
ibmcloud oc logging autoupdate enable --cluster CLUSTER ``` * 使用包含 `--force-update` 选项的日志记录命令时,强制执行一次性更新。 您的 Pod 已更新至 Fluentd 组件的最新版本,但此后 Fluentd 将不会自动更新。 示例命令 ```sh {: pre} ibmcloud oc logging config update --cluster CLUSTER --id LOG-CONFIG-ID --type LOG-TYPE --force-update ```
管理 Ingress ALB 的自动更新
控制何时更新 Ingress 应用程序负载均衡器 (ALB) 组件。 有关使 ALB 保持最新的信息,请参阅 管理 Ingress ALB 生命周期。
更新受管附加组件
托管型 IBM Cloud Kubernetes Service 集群的附加组件是一种便捷的方式,可借助开源功能(例如 Istio )来增强您的集群功能。 您添加到集群中的开源工具版本已通过 IBM 的测试,并获准在 IBM Cloud Kubernetes Service 中使用。 要将集群中启用的受管附加组件更新到最新版本,请参阅更新受管附加组件。