仅需4步,轻松升级K3s集群!
仅需4步,轻松升级K3s集群!
Rancher 2.4版本引入了对K3s集群的升级管理功能,使得K3s集群的升级变得简单快捷。本文将详细介绍如何通过Rancher UI对正在运行的K3s集群进行实时升级,帮助读者轻松掌握这一实用技能。
K3s是一个轻量级的Kubernetes发行版,特别适合用于开发环境的快速搭建,同时也非常适合生产环境中的IoT和Edge设备使用。在Rancher 2.4中,用户可以通过Rancher UI方便地导入和管理K3s集群,并执行升级操作。
Step1:创建K3s集群
在开始升级之前,我们需要先启动一个K3s集群。这里以CentOS虚拟机为例进行演示,但你也可以在任何云环境中执行相同的操作。
登录到你的虚拟机,并运行以下命令:
[root@demo3 ~]# curl -sfL https://get.k3s.io | INSTALL_K3S_VERSION="v1.0.1" sh -s -
[INFO] Using v1.0.1 as release
[INFO] Downloading hash https://github.com/rancher/k3s/releases/download/v1.0.1/sha256sum-amd64.txt
[INFO] Downloading binary https://github.com/rancher/k3s/releases/download/v1.0.1/k3s
[INFO] Verifying binary download
[INFO] Installing k3s to /usr/local/bin/k3s
[INFO] Creating /usr/local/bin/kubectl symlink to k3s
[INFO] Creating /usr/local/bin/crictl symlink to k3s
[INFO] Creating /usr/local/bin/ctr symlink to k3s
[INFO] Creating killall script /usr/local/bin/k3s-killall.sh
[INFO] Creating uninstall script /usr/local/bin/k3s-uninstall.sh
[INFO] env: Creating environment file /etc/systemd/system/k3s.service.env
[INFO] systemd: Creating service file /etc/systemd/system/k3s.service
[INFO] systemd: Enabling k3s unit
Created symlink from /etc/systemd/system/multi-user.target.wants/k3s.service to /etc/systemd/system/k3s.service.
[INFO] systemd: Starting k3sAbove will install k3s version
[root@demo3 ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
demo3 Ready master 5m55s v1.16.3-k3s.2
从输出结果可以看出,我们已经在VM上成功安装了Kubernetes v1.16.3。
Step2:安装Rancher
为了能够通过Rancher UI执行升级操作,我们需要先安装Rancher。运行以下命令:
[root@demo3 ~]# sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher
Unable to find image 'rancher/rancher:latest' locally
Trying to pull repository docker.io/rancher/rancher ...
latest: Pulling from docker.io/rancher/rancher
5bed26d33875: Pull complete
f11b29a9c730: Pull complete
930bda195c84: Pull complete
78bf9a5ad49e: Pull complete
fdb587a45dfe: Pull complete
0c3f7647a659: Pull complete
02c5407ca821: Pull complete
ebc009758b56: Pull complete
57a6e40f0f6e: Pull complete
30a88d01aca6: Pull complete
76505b705d6f: Pull complete
e585ea16af8d: Pull complete
6b069694034e: Pull complete
8c5d309f94d1: Pull complete
8ec56f5fa6c2: Pull complete
75872eb736b7: Pull complete
e774fd043162: Pull complete
c76d81e7a658: Pull complete
49bf6b83af1c: Pull complete
Digest: sha256:248ddca1169e8a4e06babd50e8105cbba0a326f86ec4de3e38d61e8909ffdb4e
Status: Downloaded newer image for docker.io/rancher/rancher:latest
Step3:在Rancher中导入集群
打开Rancher UI,点击相应的按钮导入K3s集群:
复制最后一条命令,并在安装了K3s的VM上运行:
[root@demo3 ~]# curl --insecure -sfL https://185.136.232.236/v3/import/pxv5g7xswnnqkhl4dx7nrn8swndwshk9g8426lnldrvt7vjvfc2fgr.yaml | kubectl apply -f -
clusterrole.rbac.authorization.k8s.io/proxy-clusterrole-kubeapiserver created
clusterrolebinding.rbac.authorization.k8s.io/proxy-role-binding-kubernetes-master created
namespace/cattle-system created
serviceaccount/cattle created
clusterrolebinding.rbac.authorization.k8s.io/cattle-admin-binding created
secret/cattle-credentials-d6e5b6d created
clusterrole.rbac.authorization.k8s.io/cattle-admin created
deployment.apps/cattle-cluster-agent created
daemonset.apps/cattle-node-agent created
Step4:执行升级
在Rancher UI中,点击三个小点点并选择【Edit】。选择最新的Kubernetes版本并点击保存。点击保存后,你可以看到集群状态从Active变成了Upgrading。等待一段时间后,状态会重新变为Active,此时K3s集群就已经升级到了最新版本。
故障排除
社区用户反馈在升级过程中可能会遇到集群长时间处于Upgrading状态的问题。经Rancher中国的社区技术经理验证,问题原因在于:
- K3s分为master和agent角色。如果Rancher server和K3s master在同一节点上,会导致升级失败。
- 升级时会grep两个进程(K3s master和Rancher server中的K3s),从而引发错误。
解决方案是:先停止Rancher server,等待K3s升级成功后再重新启动Rancher server。
结论
Rancher 2.4对K3s的支持使得集群管理变得更加简单。通过Rancher UI导入K3s集群后,系统会自动检测并提供升级选项。无论集群是自管理还是托管在云上,都可以通过这一功能进行升级。