Rancher RKE2 部署 K8s 竟然这么简单

部署k8s的方法有很多

RKE2 是 Rancher 的下一代 Kubernetes 发行版,它是一个完全合规的 Kubernetes 发行版,专注于安全和合规性。

Rancher 官方提供了一个 RKE2 的安装脚本 https://get.rke2.io,这个脚本可以直接安装。但是在国内网络有如下两个头疼的问题

  1. 默认的可执行文件是从 Github 下载:下载可能很慢,需要多次重试才能偶然成功。
  2. 默认的镜像是从 Docker Hub 下载:直接无法下载。

在国内安装主要就是基于脚本提供的离线安装方式, 有两种方式:

  1. 方法一:将二进制文件和镜像都使用 Github 下载到本地执行
  2. 方法二【推荐】:使用 藏云阁文件仓库服务 下载二进制文件,使用 藏云阁镜像仓库服务 拉取镜像

当前(2026年9月)最新的稳定版本是 v1.36.3+rke2r1。该版本的相关文件和镜像已经全部同步到藏云阁,支持 ARM64 和 AMD64 的架构。

安装过程很简单,主要就是以下几步

  1. 下载可执行文件
  2. 创建集群配置并指定镜像仓库
  3. 获取脚本并执行安装
  4. 基本操作使用

下载可执行文件

v1.36.3+rke2r1 版本安装可执行文件 amd64 版本文件

https://file.cncfstack.com/github.com/rancher/rke2/releases/download/v1.36.3%2Brke2r1/rke2.linux-amd64.tar.gz

和 arm64 版本的文件下载

https://file.cncfstack.com/github.com/rancher/rke2/releases/download/v1.36.3%2Brke2r1/rke2.linux-arm64.tar.gz

可以将文件下载到本地的一个目录,如 /data 。这个目录在后面的安装时会用到

# amd64
wget https://file.cncfstack.com/github.com/rancher/rke2/releases/download/v1.36.3%2Brke2r1/rke2.linux-amd64.tar.gz -O /data/rke2.linux-amd64.tar.gz

# arm64
wget https://file.cncfstack.com/github.com/rancher/rke2/releases/download/v1.36.3%2Brke2r1/rke2.linux-arm64.tar.gz -O /data/rke2.linux-arm64.tar.gz

创建集群配置并指定镜像仓库

RKE2 在管理 Kubernetes 集群时可以通过 /etc/rancher/rke2/config.yaml 指定私有镜像仓库。这里的私有镜像仓库可以是企业内部的私有镜像仓库,或者使用 藏云阁镜像仓库服务,但都需要提前将镜像上传。

如果没有特殊需求,可以在 /etc/rancher/rke2/config.yaml 中只指定如下一行即可:

system-default-registry: "registry.cncfstack.com/docker.io"

对于我这边环境,除了配置镜像仓库,还有一些特殊配置,参考

system-default-registry: "registry.cncfstack.com/docker.io"

cni: calico
token: "your-cluster-token"
tls-san:
  - "192.168.1.121"

配置说明:

  • system-default-registry: 指定默认镜像仓库前缀。由于藏云阁的在同步镜像时根据平台划分了目录多了一层,如 docker.iogcr.ioghcr.ioquay.io 等,所以需要在后面添加一个路径 /docker.io
  • cni: 指定使用 Calico 网络插件。默认是 rke2-canal 的网络方案。
  • token: 集群节点连接的凭证。后续构建多master集群,添加node节点都需要带上相同的token。
  • tls-san: K8s Apiserver 的 VIP 或域名。这个配置会配置在 apiserver 的证书地址列表中,可以是vip或者域名等高可用的入口地址。

获取按照脚本并执行安装

安装脚本可以直接 curl 下载到本地

curl -sSL https://get.rke2.io > rke2-install.sh

然后就可以执行

INSTALL_RKE2_VERSION=v1.36.3+rke2r1 \
INSTALL_RKE2_METHOD=tar \
INSTALL_RKE2_ARTIFACT_PATH=/data/v1.36.3%2Brke2r1  \
INSTALL_RKE2_TYPE=server sh rke2-install.sh

这个命令在执行前添加了几个环境变量:

  • INSTALL_RKE2_VERSION=v1.36.3+rke2r1 用来指定安装的版本。
  • INSTALL_RKE2_ARTIFACT_PATH=/data/v1.36.3%2Brke2r1 设置离线包路径,二进制文件从这里读取。
  • INSTALL_RKE2_METHOD=tar 指定安装方式,支持 rpmtar。这里的指定方式和 INSTALL_RKE2_ARTIFACT_PATH 目录中下载的文件类型有关,前面下载的是 tar.gz 就是该类型。
  • INSTALL_RKE2_TYPE=server 指定节点类型,可以指定为 serveragent,默认是 server

命令执行完成后也就安装完成了,本地有安装包缓存安装的过程很快。

集群的启动时才会拉取容器镜像,默认 rke2-server 服务没有启动,需要设置开机启动并启动服务。

systemctl enable --now rke2-server

通过 journalctl 来查看服务日志

journalctl -u rke2-server

基本操作使用

rke2 的安装文件和数据主要在 /var/lib/rancher/rke2/etc/rancher 目录中,其中已经提供 kubectl 和 helm 相关可执行文件和 kubeconfig 配置。

  • kubectlkubeconfig 的默认路径

安装时默认 kubectl 已经安装到节点中 /var/lib/rancher/rke2/bin/kubectl

kubeconfig 文件可以使用 admin 的 kubecofnig /var/lib/rancher/rke2/server/cred/admin.kubeconfig

默认安装完成后集群运行的所有 POD 如下:

[root@openeuler100 ~]# /var/lib/rancher/rke2/bin/kubectl --kubeconfig=/var/lib/rancher/rke2/server/cred/admin.kubeconfig get pod -A
NAMESPACE         NAME                                                    READY   STATUS      RESTARTS        AGE
calico-system     calico-kube-controllers-6954dcfb78-jbh58                1/1     Running     0               6h19m
calico-system     calico-node-plfwr                                       1/1     Running     0               6h19m
calico-system     calico-typha-7d9774f754-mpsrr                           1/1     Running     0               6h19m
kube-system       cloud-controller-manager-openeuler100                   1/1     Running     0               6h20m
kube-system       etcd-openeuler100                                       1/1     Running     0               6h20m
kube-system       helm-install-rke2-calico-crd-6bzrj                      0/1     Completed   0               6h20m
kube-system       helm-install-rke2-calico-wd9rq                          0/1     Completed   2 (6h20m ago)   6h20m
kube-system       helm-install-rke2-coredns-8c2mf                         0/1     Completed   0               6h20m
kube-system       helm-install-rke2-metrics-server-nf4dz                  0/1     Completed   0               6h20m
kube-system       helm-install-rke2-runtimeclasses-xv659                  0/1     Completed   0               6h20m
kube-system       helm-install-rke2-snapshot-controller-crd-9psbl         0/1     Completed   0               6h20m
kube-system       helm-install-rke2-snapshot-controller-wc5gt             0/1     Completed   0               6h20m
kube-system       helm-install-rke2-traefik-crd-trfmf                     0/1     Completed   0               6h20m
kube-system       helm-install-rke2-traefik-lj296                         0/1     Completed   2 (6h19m ago)   6h20m
kube-system       kube-apiserver-openeuler100                             1/1     Running     0               6h20m
kube-system       kube-controller-manager-openeuler100                    1/1     Running     0               6h20m
kube-system       kube-proxy-openeuler100                                 1/1     Running     0               6h20m
kube-system       kube-scheduler-openeuler100                             1/1     Running     0               6h20m
kube-system       rke2-coredns-rke2-coredns-659b8fb74b-x45c8              1/1     Running     0               6h20m
kube-system       rke2-coredns-rke2-coredns-autoscaler-5dd7f76f89-vxdmd   1/1     Running     0               6h20m
kube-system       rke2-metrics-server-659966647b-x8ng7                    0/1     Running     0               6h18m
kube-system       rke2-snapshot-controller-685cff5c47-rr55w               1/1     Running     0               6h19m
kube-system       rke2-traefik-gkkf6                                      1/1     Running     0               6h18m
tigera-operator   tigera-operator-555d5f99bb-mgq9n                        1/1     Running     0               6h19m
  • helm 命令和配置文件

rke2 的大部分服务都是通过 helm 进行安装部署的,但是没有单独提供 helm 命令为用户使用。

可以从 helm 官网或 Github 来下载 helm 可执行文件,也可以通过如下命令找到 rke2 安装在容器中的 helm 可执行文件,复制出来即可。

find /var/lib/rancher -type f -executable -name helm -exec cp {} /usr/local/bin/ \;

helm 访问集群使用的 kubeconfig 和 kubectl 的是一样的,例如查询集群中所有已经安装的 HelmChart。

[root@openeuler100 ~]# /usr/local/bin/helm --kubeconfig=/var/lib/rancher/rke2/server/cred/admin.kubeconfig ls -A
NAME                        	NAMESPACE  	REVISION	UPDATED                                	STATUS  	CHART                               	APP VERSION
rke2-calico                 	kube-system	1       	2026-08-28 07:40:49.748392371 +0000 UTC	deployed	rke2-calico-v3.32.100               	v3.32.1
rke2-calico-crd             	kube-system	1       	2026-08-28 07:40:35.613392773 +0000 UTC	deployed	rke2-calico-crd-v3.32.100           	v3.32.1
rke2-coredns                	kube-system	1       	2026-08-28 07:40:35.514026706 +0000 UTC	deployed	rke2-coredns-1.46.201               	1.13.1
rke2-metrics-server         	kube-system	1       	2026-08-28 07:41:48.70459788 +0000 UTC 	deployed	rke2-metrics-server-3.13.105        	0.8.1
rke2-runtimeclasses         	kube-system	1       	2026-08-28 07:41:50.617655654 +0000 UTC	deployed	rke2-runtimeclasses-0.1.000         	0.1.0
rke2-snapshot-controller    	kube-system	1       	2026-08-28 07:41:46.04662543 +0000 UTC 	deployed	rke2-snapshot-controller-4.2.008    	v8.5.0
rke2-snapshot-controller-crd	kube-system	1       	2026-08-28 07:41:35.592402686 +0000 UTC	deployed	rke2-snapshot-controller-crd-4.2.008	v8.6.0
rke2-traefik                	kube-system	1       	2026-08-28 07:41:50.189510609 +0000 UTC	deployed	rke2-traefik-40.1.009               	v3.7.1
rke2-traefik-crd            	kube-system	1       	2026-08-28 07:41:35.59440579 +0000 UTC 	deployed	rke2-traefik-crd-40.1.009           	v3.7.1

如果觉得每次执行命令太长,可以在 ~/.bashrc 中添加 alias 别名。

alias kubectl="/var/lib/rancher/rke2/bin/kubectl --kubeconfig=/var/lib/rancher/rke2/server/cred/admin.kubeconfig"
alias helm="/usr/local/bin/helm --kubeconfig=/var/lib/rancher/rke2/server/cred/admin.kubeconfig"