24 管理群集 #
本章介绍如何在管理群集
上执行各种 Day 2
操作。
24.1 RKE2 升级 #
为了确保能够实现灾难恢复,我们建议备份 RKE2
群集数据。有关如何执行此操作的信息,请查看此页面。rke2
二进制文件的默认位置为 /opt/rke2/bin
。
可以使用 RKE2 安装脚本升级 RKE2 版本,如下所示:
curl -sfL https://get.rke2.io | INSTALL_RKE2_VERSION=vX.Y.Z+rke2rN sh -
安装后请记得重启动 rke2
进程:
# For server nodes:
systemctl restart rke2-server
# For agent nodes:
systemctl restart rke2-agent
为了避免任何不可预见的升级问题,请遵循以下节点升级顺序:
服务器节点 - 应每次升级一个节点。
代理节点 - 应在完成所有服务器节点升级之后进行升级。可以同时升级。
有关更多信息,请参见 RKE2 升级文档。
24.2 操作系统升级 #
本节假设您已将系统注册到 https://scc.suse.com。
SUSE 定期发布新的 SLE Micro
软件包更新。SLE Micro 使用
transactional-upgrade
来检索更新的软件包版本。
transactional-upgrade
提供应用程序和库来以事务方式更新 Linux
操作系统,也就是说,更新将在后台执行,同时系统可以照常继续运行。只有在重引导系统后,更新才会生效。有关更多信息,请参见
transactional-update
GitHub 页面。
要更新系统中的所有软件包,请执行::
transactional-update
由于重引导节点会导致它有一段时间不可用,如果您运行的是多节点群集,可以先封锁并清空节点,然后再重引导。
要封锁节点,请执行::
kubectl cordon <node>
这会导致将该节点移出默认调度机制,以确保不会错误地将任何 Pod 分配到该节点。
要清空节点,请执行::
kubectl drain <node>
这可以确保将该节点上的所有工作负载转移到其他可用节点。
根据您在节点上运行的工作负载,可能还需要在命令中提供其他标志(例如
--delete-emptydir-data
、--ignore-daemonsets
)。
重引导节点:
sudo reboot
成功重引导后,该节点上的软件包将会更新。唯一剩下的操作就是使用 uncordon 命令将该节点放回到默认调度机制。
解封节点::
kubectl uncordon <node>
如果您要撤销更新,请使用以下 transactional-update
命令执行上述步骤:
transactional-update rollback last
24.3 Helm 升级 #
本节假设您已在系统上安装 helm
。有关 helm
安装说明,请查看此页面。
本节介绍如何升级通过 EIB 部署的(第 24.3.1 节 “通过 EIB 部署的 Helm chart”)和不是通过 EIB 部署的(第 24.3.2 节 “不是通过 EIB 部署的 Helm chart”)Helm chart。
24.3.1 通过 EIB 部署的 Helm chart #
EIB 使用 RKE2 的清单自动部署功能来部署其映像定义文件(第 3.3 节 “创建映像定义文件”)中定义的 Helm chart。
要升级以这种方式部署的 chart,需要升级 EIB 在初始化器
节点上的
/var/lib/rancher/rke2/server/manifests
目录下创建的 chart 清单文件。
为了确保能够实现灾难恢复,我们建议您始终备份 chart 清单文件,并按照 chart 提供的任何灾难恢复相关文档进行操作。
要升级 chart 清单文件,请执行以下步骤:
找到
初始化器
节点对于
多节点群集
- 在 EIB 映像定义文件中,应该已经为某个节点指定了initializer: true
属性。如果未指定此属性,则初始化器节点将是节点列表中的第一个服务器节点。对于
单节点群集
- 初始化器是当前正在运行的节点。
通过 SSH 连接到
初始化器
节点:ssh root@<node_ip>
提取 Helm chart:
对于托管在 Helm chart 储存库中的 Helm chart:
helm repo add <chart_repo_name> <chart_repo_urls> helm pull <chart_repo_name>/<chart_name> # Alternatively if you want to pull a specific verison helm pull <chart_repo_name>/<chart_name> --version=X.Y.Z
对于基于 OCI 的 Helm chart:
helm pull oci://<chart_oci_url> # Alternatively if you want to pull a specific verison helm pull oci://<chart_oci_url> --version=X.Y.Z
将提取的
.tgz
存档编码,以便可以将其传递给HelmChart
CR 配置:base64 -w 0 <chart_name>-X.Y.Z.tgz > <chart_name>-X.Y.Z.txt
为要编辑的 chart 清单文件创建副本:
cp /var/lib/rancher/rke2/server/manifests/<chart_name>.yaml ./<chart_name>.yaml
更改
bar.yaml
文件的chartContent
和version
配置:sed -i -e "s|chartContent:.*|chartContent: $(<chart-name-X.Y.Z.txt)|" -e "s|version:.*|version: X.Y.Z|" <chart_name>.yaml
注意如果需要对 chart 进行任何其他升级更改(例如添加新的自定义 chart 值),则需要手动编辑 chart 清单文件。
替换原始 chart 清单文件:
cp <chart_name>.yaml /var/lib/rancher/rke2/server/manifests/
以上命令将触发 Helm chart 升级。升级将由 helm-controller 处理。
要跟踪 Helm chart 的升级,需要查看 helm-controller
为 chart 升级创建的 Pod
的日志。有关详细信息,请参见“示例”(第 24.3.1.1 节 “示例”)一节。
24.3.1.1 示例 #
本节中的示例假设您已找到并连接到初始化器
节点。
本节提供有关如何升级以下 Helm chart 的示例:
Rancher(第 24.3.1.1.1 节 “Rancher 升级”)Helm chart
Metal3(第 24.3.1.1.2 节 “Metal3 升级”)Helm chart
24.3.1.1.1 Rancher 升级 #
为了确保能够实现灾难恢复,我们建议进行 Rancher 备份。有关如何执行此操作的信息,请查看此页面。
此示例说明如何将 Rancher 升级到 2.8.4
版本。
添加
Rancher Prime
Helm 储存库:helm repo add rancher-prime https://charts.rancher.com/server-charts/prime
提取最新的
Rancher Prime
Helm chart 版本:helm pull rancher-prime/rancher --version=2.8.4
将
.tgz
存档编码,以便可以将其传递给HelmChart
CR 配置:base64 -w 0 rancher-2.8.4.tgz > rancher-2.8.4-encoded.txt
为要编辑的
rancher.yaml
文件创建副本:cp /var/lib/rancher/rke2/server/manifests/rancher.yaml ./rancher.yaml
更改
rancher.yaml
文件的chartContent
和version
配置:sed -i -e "s|chartContent:.*|chartContent: $(<rancher-2.8.4-encoded.txt)|" -e "s|version:.*|version: 2.8.4|" rancher.yaml
注意如果需要对 chart 进行任何其他升级更改(例如添加新的自定义 chart 值),则需要手动编辑
rancher.yaml
文件。替换原始
rancher.yaml
文件:cp rancher.yaml /var/lib/rancher/rke2/server/manifests/
要校验是否做出了更新,请执行以下操作:
列出
default
名称空间中的 Pod:kubectl get pods -n default # Example output NAME READY STATUS RESTARTS AGE helm-install-cert-manager-7v7nm 0/1 Completed 0 88m helm-install-rancher-p99k5 0/1 Completed 0 3m21s
查看
helm-install-rancher-*
Pod 的日志:kubectl logs <helm_install_rancher_pod> -n default # Example kubectl logs helm-install-rancher-p99k5 -n default
校验
Rancher
Pod 是否正在运行:kubectl get pods -n cattle-system # Example output NAME READY STATUS RESTARTS AGE helm-operation-mccvd 0/2 Completed 0 3m52s helm-operation-np8kn 0/2 Completed 0 106s helm-operation-q8lf7 0/2 Completed 0 2m53s rancher-648d4fbc6c-qxfpj 1/1 Running 0 5m27s rancher-648d4fbc6c-trdnf 1/1 Running 0 9m57s rancher-648d4fbc6c-wvhbf 1/1 Running 0 9m57s rancher-webhook-649dcc48b4-zqjs7 1/1 Running 0 100s
校验
Rancher
版本是否已升级:kubectl get settings.management.cattle.io server-version # Example output NAME VALUE server-version v2.8.4
24.3.1.1.2 Metal3 升级 #
此示例说明如何将 Metal3 升级到 0.7.1
版本。
提取最新的
Metal3
Helm chart 版本:helm pull oci://registry.suse.com/edge/metal3-chart --version 0.7.1
将
.tgz
存档编码,以便可以将其传递给HelmChart
CR 配置:base64 -w 0 metal3-chart-0.7.1.tgz > metal3-chart-0.7.1-encoded.txt
为要编辑的
Metal3
清单文件创建副本:cp /var/lib/rancher/rke2/server/manifests/metal3.yaml ./metal3.yaml
更改
Metal3
清单文件的chartContent
和version
配置:sed -i -e "s|chartContent:.*|chartContent: $(<metal3-chart-0.7.1-encoded.txt)|" -e "s|version:.*|version: 0.7.1|" metal3.yaml
注意如果需要对 chart 进行任何其他升级更改(例如添加新的自定义 chart 值),则需要手动编辑
metal3.yaml
文件。替换原始
Metal3
清单文件:cp metal3.yaml /var/lib/rancher/rke2/server/manifests/
要校验是否做出了更新,请执行以下操作:
列出
default
名称空间中的 Pod:kubectl get pods -n default # Example output NAME READY STATUS RESTARTS AGE helm-install-metal3-7p7bl 0/1 Completed 0 27s
查看
helm-install-rancher-*
Pod 的日志:kubectl logs <helm_install_rancher_pod> -n default # Example kubectl logs helm-install-metal3-7p7bl -n default
校验
Metal3
Pod 是否正在运行:kubectl get pods -n metal3-system # Example output NAME READY STATUS RESTARTS AGE baremetal-operator-controller-manager-785f99c884-9z87p 2/2 Running 2 (25m ago) 36m metal3-metal3-ironic-96fb66cdd-lkss2 4/4 Running 0 3m54s metal3-metal3-mariadb-55fd44b648-q6zhk 1/1 Running 0 36m
校验
HelmChart
资源版本是否已升级:kubectl get helmchart metal3 -n default # Example output NAME JOB CHART TARGETNAMESPACE VERSION REPO HELMVERSION BOOTSTRAP metal3 helm-install-metal3 metal3-system 0.7.1
24.3.2 不是通过 EIB 部署的 Helm chart #
获取当前正在运行的 Helm chart
.yaml
文件的值,并根据需要对其进行任何更改:helm get values <chart_name> -n <chart_namespace> -o yaml > <chart_name>-values.yaml
更新 Helm chart:
# For charts using a chart repository helm upgrade <chart_name> <chart_repo_name>/<chart_name> \ --namespace <chart_namespace> \ -f <chart_name>-values.yaml \ --version=X.Y.Z # For OCI based charts helm upgrade <chart_name> oci://<oci_registry_url>/<chart_name> \ --namespace <chart_namespace> \ -f <chart_name>-values.yaml \ --version=X.Y.Z
校验 chart 是否已升级。根据具体的 chart,可能需要校验不同的资源。有关 chart 升级示例,请参见“示例”(第 24.3.2.1 节 “示例”)一节。
24.3.2.1 示例 #
本节提供有关如何升级以下 Helm chart 的示例:
Rancher(第 24.3.2.1.1 节 “Rancher”)Helm chart
Metal3(第 24.3.2.1.2 节 “Metal3”)Helm chart
24.3.2.1.1 Rancher #
为了确保能够实现灾难恢复,我们建议进行 Rancher 备份。有关如何执行此操作的信息,请查看此页面。
此示例说明如何将 Rancher 升级到 2.8.4
版本。
获取当前 Rancher 版本的值,并将其列显到
rancher-values.yaml
文件中:helm get values rancher -n cattle-system -o yaml > rancher-values.yaml
更新 Helm chart:
helm upgrade rancher rancher-prime/rancher \ --namespace cattle-system \ -f rancher-values.yaml \ --version=2.8.4
校验
Rancher
版本是否已升级:kubectl get settings.management.cattle.io server-version # Example output NAME VALUE server-version v2.8.4
有关 Rancher Helm chart 升级的详细信息,请查看此页面。
24.3.2.1.2 Metal3 #
此示例说明如何将 Metal3 升级到 0.7.1
版本。
获取当前 Rancher 版本的值,并将其列显到
rancher-values.yaml
文件中:helm get values metal3 -n metal3-system -o yaml > metal3-values.yaml
更新 Helm chart:
helm upgrade metal3 oci://registry.suse.com/edge/metal3-chart \ --namespace metal3-system \ -f metal3-values.yaml \ --version=0.7.1
校验
Metal3
Pod 是否正在运行:kubectl get pods -n metal3-system # Example output NAME READY STATUS RESTARTS AGE baremetal-operator-controller-manager-785f99c884-fvsx4 2/2 Running 0 12m metal3-metal3-ironic-96fb66cdd-j9mgf 4/4 Running 0 2m41s metal3-metal3-mariadb-55fd44b648-7fmvk 1/1 Running 0 12m
校验
Metal3
Helm 版本是否已更改:helm ls -n metal3-system # Expected output NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION metal3 metal3-system 2 2024-06-17 12:43:06.774802846 +0000 UTC deployed metal3-0.7.1 1.16.0