RKE2 单节点集群安装 Rancher 完整教程
本文档介绍如何在单节点上部署 RKE2 Kubernetes 集群,并安装带有自签名证书(自动续期)的 Rancher。

环境要求
| 项目 | 要求 |
|---|---|
| 操作系统 | Rocky Linux 8/9、CentOS 7/8、Ubuntu 20.04+ |
| 网络 | 可访问外网或配置私有镜像仓库 |
一、系统初始化
在安装 RKE2 之前,需要对系统进行基础配置,以RHEL系 或 Red Hat系为例。
bash
#!/bin/bash
#!/bin/bash
echo "开始服务器初始化 (Rocky/CentOS 版本)..."
yum update -y
# 检查是否为 root 用户
if [ "$(id -u)" -ne 0 ]; then
echo "请使用 root 用户运行此脚本。"
exit 1
fi
# 1 修改 /etc/hostname
echo "请输入新的主机名 (hostname):"
read NEW_HOSTNAME
if [ -z "$NEW_HOSTNAME" ]; then
echo "主机名不能为空。"
exit 1
fi
echo "设置主机名为: $NEW_HOSTNAME"
hostnamectl set-hostname "$NEW_HOSTNAME"
# 2 关闭防火墙
echo "关闭防火墙..."
systemctl stop firewalld
systemctl disable firewalld
systemctl status firewalld --no-pager
# 3 关闭 SELinux
echo "关闭 SELinux..."
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config
# 4 禁用内存交换
echo "禁用内存交换 (swap)..."
sed -i '/ swap /s/^/#/' /etc/fstab
swapoff -a
echo "当前内存状态:"
free -h
# 5 转发 IPv4 并让 iptables 看到桥接流量
echo "设置 IPv4 转发和桥接流量配置..."
cat <<EOF | tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
modprobe overlay
modprobe br_netfilter
cat <<EOF | tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF
sysctl --system
echo "确认加载的内核模块:"
lsmod | grep br_netfilter
lsmod | grep overlay
echo "确认系统变量:"
sysctl net.bridge.bridge-nf-call-iptables net.bridge.bridge-nf-call-ip6tables net.ipv4.ip_forward
echo "所有配置完成。建议重启系统以确保所有更改生效。"
二、镜像准备(私有仓库/离线环境)
⚠️ 如果服务器可以直接访问外网,可以跳过本章节。
2.1 确定 RKE2 版本
在同步镜像之前,先确认要安装的 RKE2 版本:
bash
# 方法一:查询 GitHub 发布的版本(推荐)
curl -s -o /dev/null -w "%{url_effective}\n" -L "https://update.rke2.io/v1-release/channels/stable" | sed 's|.*/||'
# 示例输出:
# v1.34.3+rke2r1
# 这表示会安装 1.34.x 系列的最稳定版本
2.2 获取镜像列表
bash
# 设置版本(根据上一步确定的版本)
RKE2_VERSION="v1.34.3+rke2r1"
# 下载镜像列表
# 注意:URL 中的 + 需要编码为 %2B
curl -LO "https://github.com/rancher/rke2/releases/download/${RKE2_VERSION/+/%2B}/rke2-images-all.linux-amd64.txt"
# 查看镜像列表
cat rke2-images-all.linux-amd64.txt
2.3 方式一:同步镜像到私有仓库
在能访问外网的机器上执行镜像同步:
bash
#!/bin/bash
# sync-rke2-images.sh
# 将 RKE2 镜像同步到私有仓库
set -e
# ==================== 配置 ====================
RKE2_VERSION="v1.34.3+rke2r1"
PRIVATE_REGISTRY="<your repository>" # 你的私有仓库地址
# =============================================
# 如果使用代理,排除私有仓库地址
export no_proxy="localhost,127.0.0.1,${PRIVATE_REGISTRY%:*}"
export NO_PROXY="${no_proxy}"
# 下载镜像列表
IMAGES_FILE="rke2-images-all.linux-amd64.txt"
if [ ! -f "${IMAGES_FILE}" ]; then
echo "下载镜像列表..."
curl -LO "https://github.com/rancher/rke2/releases/download/${RKE2_VERSION/+/%2B}/${IMAGES_FILE}"
fi
# 统计
TOTAL=$(grep -v '^$' "${IMAGES_FILE}" | wc -l)
COUNT=0
echo "=========================================="
echo "开始同步 ${TOTAL} 个镜像到 ${PRIVATE_REGISTRY}"
echo "=========================================="
# 同步镜像
while IFS= read -r image; do
[ -z "$image" ] && continue
COUNT=$((COUNT + 1))
# 提取镜像名(去掉 docker.io/ 前缀)
image_name="${image#docker.io/}"
target="${PRIVATE_REGISTRY}/${image_name}"
echo ""
echo "[${COUNT}/${TOTAL}] ${image_name}"
# 拉取
echo " 拉取中..."
docker pull "${image}" || { echo " ❌ 拉取失败"; continue; }
# 标记
docker tag "${image}" "${target}"
# 推送
echo " 推送中..."
docker push "${target}" || { echo " ❌ 推送失败"; continue; }
echo " ✅ 完成"
done < "${IMAGES_FILE}"
echo ""
echo "=========================================="
echo "✅ 同步完成!共 ${COUNT} 个镜像"
echo "=========================================="
注意事项:
- Docker 需要配置 insecure-registries(如果私有仓库是 HTTP):
bash
# /etc/docker/daemon.json
{
"insecure-registries": ["<your repository>"]
}
# 然后重启 Docker: systemctl restart docker
- 如果使用代理,需要排除私有仓库地址(见脚本中的 no_proxy 配置)
2.4 方式二:离线安装(下载镜像包)
如果无法同步镜像到私有仓库,可以下载官方离线镜像包:
bash
# 设置版本
RKE2_VERSION="v1.34.3+rke2r1"
# 在能访问外网的机器上下载镜像包(约 800MB-1GB)
curl -LO "https://github.com/rancher/rke2/releases/download/${RKE2_VERSION/+/%2B}/rke2-images.linux-amd64.tar.zst"
# 也可以下载所有镜像(包含 CNI 等,约 1.5GB)
# curl -LO "https://github.com/rancher/rke2/releases/download/${RKE2_VERSION/+/%2B}/rke2-images-all.linux-amd64.tar.zst"
将下载的文件传输到目标服务器后:
bash
# 在目标服务器上,将镜像包放到指定目录
mkdir -p /var/lib/rancher/rke2/agent/images/
# 复制镜像包(RKE2 启动时会自动加载)
cp rke2-images.linux-amd64.tar.zst /var/lib/rancher/rke2/agent/images/
# 如果使用了数据盘符号链接
# cp rke2-images.linux-amd64.tar.zst /data/rancher/rke2/agent/images/
2.5 同时同步 cert-manager 和 Rancher 镜像
除了 RKE2 系统镜像,还需要同步 cert-manager 和 Rancher 镜像:
bash
# cert-manager 镜像(v1.18.2)
quay.io/jetstack/cert-manager-controller:v1.18.2
quay.io/jetstack/cert-manager-webhook:v1.18.2
quay.io/jetstack/cert-manager-cainjector:v1.18.2
quay.io/jetstack/cert-manager-startupapicheck:v1.18.2
# Rancher 镜像(v2.13.1)
docker.io/rancher/rancher:v2.13.1
docker.io/rancher/rancher-webhook:v0.6.3
docker.io/rancher/shell:v0.3.2
docker.io/rancher/fleet-agent:v0.11.4
# ... 更多镜像见 Rancher 官方文档
同步脚本示例:
bash
#!/bin/bash
# 同步 cert-manager 镜像
PRIVATE_REGISTRY="<your repository>"
CERT_MANAGER_VERSION="v1.18.2"
IMAGES=(
"quay.io/jetstack/cert-manager-controller:${CERT_MANAGER_VERSION}"
"quay.io/jetstack/cert-manager-webhook:${CERT_MANAGER_VERSION}"
"quay.io/jetstack/cert-manager-cainjector:${CERT_MANAGER_VERSION}"
"quay.io/jetstack/cert-manager-startupapicheck:${CERT_MANAGER_VERSION}"
)
for image in "${IMAGES[@]}"; do
# 提取仓库路径(去掉域名前缀)
image_path="${image#*/}"
target="${PRIVATE_REGISTRY}/${image_path}"
echo "处理: ${image}"
docker pull "${image}"
docker tag "${image}" "${target}"
docker push "${target}"
echo "完成: ${target}"
done
三、安装 RKE2 单节点集群
3.1 配置数据存储目录(重要)
RKE2 默认将数据存储在 /var/lib/rancher/rke2,包括:
- containerd 镜像和容器数据
- etcd 数据
- 日志文件
如果你的数据盘挂载在 /data,建议将数据存储到数据盘:
bash
# 创建 /var/lib/rancher 目录
mkdir -p /var/lib/rancher
# 确保数据目录 /data/rancher 已经存在(自己的数据盘)
mkdir -p /data/rancher
#Bind mount 数据盘到 /var/lib/rancher
mount --bind /data/rancher /var/lib/rancher
#固化到 fstab(保证重启后依旧生效):
echo "/data/rancher /var/lib/rancher none bind 0 0" >> /etc/fstab
#验证挂载是否生效
mount | grep '/var/lib/rancher'
stat /var/lib/rancher /data/rancher
df -h /var/lib/rancher /data/rancher
挂载成功你应该看到:
/var/lib/rancher是目录- 底层设备和
/data/rancher一致 - 不会双倍占用磁盘
- 例如:
- 文件系统 容量 已用 可用 已用% 挂载点 /dev/mapper/rlm-data 321G 12G 309G 4% /var/lib/rancher /dev/mapper/rlm-data 321G 12G 309G 4% /data
3.2 创建 RKE2 配置文件
perl
# 创建配置目录
mkdir -p /etc/rancher/rke2/
# 获取本机 IP(根据实际情况修改)
NODE_IP="10.283.9.135"
# 生成随机 Token(用于节点认证)
# 单节点可随意设置,多节点集群需所有节点使用相同 token
RKE2_TOKEN=$(openssl rand -hex 16)
echo "生成的 Token: ${RKE2_TOKEN}"
# 创建配置文件
cat > /etc/rancher/rke2/config.yaml <<EOF
# Token: 用于节点认证
# - 单节点:可随意设置或省略(RKE2 会自动生成)
# - 多节点:所有节点必须使用相同的 token
token: ${RKE2_TOKEN}
# TLS SAN 配置(重要:避免证书错误)
tls-san:
- ${NODE_IP}
- ${NODE_IP}.sslip.io
- localhost
- 127.0.0.1
# 禁用不需要的组件(可选)
# disable:
# - rke2-ingress-nginx # 如果要自己安装 ingress-nginx 可以禁用
# 单节点模式下的 etcd 快照配置
etcd-snapshot-schedule-cron: "0 */6 * * *"
etcd-snapshot-retention: 5
EOF
3.3 配置私有镜像仓库(可选)
如果你有私有镜像仓库,可以配置 RKE2 使用它:
yaml
# 创建 registries 配置文件
cat > /etc/rancher/rke2/registries.yaml <<'EOF'
mirrors:
# Docker Hub 镜像加速
docker.io:
endpoint:
- "https://你的私有仓库地址"
# 如果私有仓库同步了 RKE2 系统镜像
# registry.k8s.io:
# endpoint:
# - "https://你的私有仓库地址"
# 私有仓库认证配置(如需要)
configs:
"你的私有仓库地址":
auth:
username: 你的用户名
password: 你的密码
# 如果是自签名证书
# tls:
# insecure_skip_verify: true
EOF
示例(使用你的私有仓库):
yaml
cat > /etc/rancher/rke2/registries.yaml <<'EOF'
mirrors:
docker.io:
endpoint:
- "http://<your repository>"
quay.io:
endpoint:
- "http://<your repository>"
registry.k8s.io:
endpoint:
- "http://<your repository>"
ghcr.io:
endpoint:
- "http://<your repository>"
# 重要:私有仓库自身也需要配置(防止直接访问时用 HTTPS)
"<your repository>":
endpoint:
- "http://<your repository>"
configs:
"<your repository>":
auth:
username: admin
password: cquissE1
EOF
3.4 安装并启动 RKE2
ini
# 设置 RKE2 版本(必须是上面查询到的可用版本)
RKE2_VERSION="v1.34.3+rke2r1"
# 使用国内镜像安装(推荐)
curl -sfL https://rancher-mirror.rancher.cn/rke2/install.sh | \
INSTALL_RKE2_MIRROR=cn \
INSTALL_RKE2_VERSION="${RKE2_VERSION}" \
sh -
# 如果需要使用官方源(需要外网访问,版本更新更快)
# curl -sfL https://get.rke2.io | INSTALL_RKE2_VERSION="${RKE2_VERSION}" sh -
# 启用并启动 RKE2 服务
systemctl enable rke2-server.service
systemctl start rke2-server.service
# 查看启动日志(首次启动需要等待几分钟)
journalctl -u rke2-server -f
使用 crictl + ctr 排查启动过程(在 kubectl 配置之前即可使用):
bash
# 配置 crictl(RKE2 使用的 containerd socket 路径不同)
cat > /etc/crictl.yaml <<'EOF'
runtime-endpoint: unix:///run/k3s/containerd/containerd.sock
image-endpoint: unix:///run/k3s/containerd/containerd.sock
timeout: 300
EOF
# 查看 Pod 状态(无需 kubectl 即可排查)
crictl pods
# 查看已拉取的镜像
crictl images
# 查看容器状态
crictl ps -a
# 查看容器日志
crictl logs <container_id>
预期 Pod 状态(核心组件启动顺序):
bash
etcd-k8s-rancher Ready # 1. 首先启动
kube-apiserver-k8s-rancher Ready # 2. API Server
kube-controller-manager-k8s-rancher Ready # 3. Controller
kube-scheduler-k8s-rancher Ready # 4. Scheduler
kube-proxy-k8s-rancher Ready # 5. Proxy
cloud-controller-manager-k8s-rancher Ready # 6. Cloud Controller
helm-install-rke2-canal-xxx Ready # 7. Helm 安装作业
helm-install-rke2-coredns-xxx Ready # 8. Helm 安装作业
# 配置 ctr (ctr主要用于无法拉取镜像的时候导入离线镜像包)
# 添加到 bashrc
cat >> ~/.bashrc <<'EOF'
# RKE2 ctr alias
alias ctr='ctr -a /run/k3s/containerd/containerd.sock'
EOF
# 立即生效
source ~/.bashrc
# 查看镜像
ctr -n k8s.io images ls | grep fleet
# 导出镜像
ctr -n k8s.io images export /tmp/fleet.tar <your repository>/rancher/fleet:v0.14.1
# 使用 ctr 导入 Docker 导出的 tar
ctr -n k8s.io images import /tmp/fleet-v0.14.1.tar
3.5 配置 kubectl
bash
# 配置环境变量
echo 'export KUBECONFIG=/etc/rancher/rke2/rke2.yaml' >> ~/.bashrc
echo 'export PATH=$PATH:/var/lib/rancher/rke2/bin' >> ~/.bashrc
source ~/.bashrc
# 验证 kubectl
kubectl get nodes
3.6 验证集群状态
bash
# 检查节点状态
kubectl get nodes
# 检查所有 Pod 状态
kubectl get pods -A
# 等待所有 Pod 就绪(可能需要 3-5 分钟)
watch kubectl get pods -A
# 预期输出:所有 Pod 应为 Running 或 Completed 状态
#命令补全
apt install -y bash-completion && yum install -y bash-completion
echo 'source <(kubectl completion bash)' >> ~/.bashrc
source ~/.bashrc
四、安装 cert-manager(证书自动管理)
cert-manager 用于自动签发和续期证书。
4.1 创建命名空间
arduino
kubectl create namespace cert-manager || true
4.2 下载并安装 cert-manager
bash
# 下载官方清单
curl -fsSL -o cert-manager.yaml \
https://github.com/cert-manager/cert-manager/releases/download/v1.18.2/cert-manager.yaml
# (可选)替换为私有镜像仓库
# sed -i -E "s#quay.io/jetstack#<your repository>/common/jetstack#g" cert-manager.yaml
# 应用
kubectl apply -f cert-manager.yaml
# 等待组件就绪
kubectl -n cert-manager rollout status deploy/cert-manager --timeout=300s
kubectl -n cert-manager rollout status deploy/cert-manager-webhook --timeout=300s
kubectl -n cert-manager rollout status deploy/cert-manager-cainjector --timeout=300s
# 验证 Pod 状态
kubectl -n cert-manager get pods
五、配置自签名 CA 证书
5.1 生成根 CA 证书
bash
# 创建工作目录
mkdir -p /root/rancher-certs && cd /root/rancher-certs
# 生成 CA 私钥
openssl genrsa -out ca.key 4096
# 生成 CA 证书(有效期 10 年)
openssl req -x509 -new -nodes -key ca.key -sha256 -days 3650 \
-subj "/CN=rancher-local-ca/O=Rancher" -out ca.crt
# 验证证书
openssl x509 -in ca.crt -text -noout | head -20
5.2 将 CA 证书导入 cert-manager
ini
# 创建 TLS Secret(供 ClusterIssuer 使用)
kubectl -n cert-manager create secret tls ca-key-pair \
--cert=ca.crt \
--key=ca.key \
--dry-run=client -o yaml | kubectl apply -f -
5.3 创建 ClusterIssuer
yaml
cat > clusterissuer-local-ca.yaml <<'EOF'
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: local-ca
spec:
ca:
secretName: ca-key-pair
EOF
kubectl apply -f clusterissuer-local-ca.yaml
# 验证 ClusterIssuer 状态
kubectl get clusterissuer local-ca
六、安装 Ingress-NGINX Controller
RKE2 默认安装了 ingress-nginx,如果需要自定义安装可以按以下步骤操作。
6.1 检查是否已安装
csharp
# 检查 RKE2 内置的 ingress-nginx
kubectl -n kube-system get pods | grep ingress
# 设置为默认 IngressClass
kubectl annotate ingressclass nginx ingressclass.kubernetes.io/is-default-class="true" --overwrite
# 如果已有 ingress-nginx 运行,可以跳过本节
6.2 (可选)手动安装 Ingress-NGINX
csharp
# 下载 baremetal 清单
curl -fsSL -o ingress-nginx.yaml \
https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.11.3/deploy/static/provider/baremetal/deploy.yaml
# (可选)替换为私有镜像仓库
# sed -i 's#registry.k8s.io/ingress-nginx/controller#<your repository>/common/ingress-nginx-controller#g' ingress-nginx.yaml
# sed -i 's#registry.k8s.io/ingress-nginx/kube-webhook-certgen#<your repository>/common/kube-webhook-certgen#g' ingress-nginx.yaml
# 应用
kubectl apply -f ingress-nginx.yaml
# 设置为默认 IngressClass
kubectl annotate ingressclass nginx ingressclass.kubernetes.io/is-default-class="true" --overwrite
# 验证
kubectl -n ingress-nginx get pods -o wide
kubectl -n ingress-nginx get ingressclass nginx -o yaml | grep -A5 annotations
七、创建 Rancher 命名空间和证书
7.1 创建命名空间
sql
kubectl create namespace cattle-system || true
7.2 创建 CA 信任 Secret
ini
cd /root/rancher-certs
# 创建 tls-ca secret(Rancher 需要信任 CA)
kubectl -n cattle-system create secret generic tls-ca \
--from-file=cacerts.pem=ca.crt \
--from-file=cacerts=ca.crt \
--dry-run=client -o yaml | kubectl apply -f -
7.3 创建 Rancher TLS 证书(自动续期)
yaml
# 设置你的节点 IP
NODE_IP="10.283.9.135"
cat > certificate-rancher.yaml <<EOF
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: tls-rancher-ingress
namespace: cattle-system
spec:
secretName: tls-rancher-ingress
# 证书有效期配置
duration: 43800h # 5 年
renewBefore: 2160h # 到期前 90 天自动续期
commonName: "${NODE_IP}.sslip.io"
dnsNames:
- "${NODE_IP}.sslip.io"
ipAddresses:
- ${NODE_IP}
issuerRef:
name: local-ca
kind: ClusterIssuer
EOF
kubectl apply -f certificate-rancher.yaml
# 等待证书签发
kubectl -n cattle-system get certificate tls-rancher-ingress -w
# 验证证书 Secret 已创建
kubectl -n cattle-system get secret tls-rancher-ingress
八、安装 Helm
bash
# 下载 Helm
curl -LO https://get.helm.sh/helm-v3.15.4-linux-amd64.tar.gz
# 解压并安装
tar -zxvf helm-v3.15.4-linux-amd64.tar.gz
mv linux-amd64/helm /usr/local/bin/helm
chmod +x /usr/local/bin/helm
# 验证
helm version
# 清理
rm -rf linux-amd64 helm-v3.15.4-linux-amd64.tar.gz
九、安装 Rancher
9.1 添加 Helm 仓库
bash
# 使用国内镜像仓库
helm repo add rancher-stable https://rancher-mirror.rancher.cn/server-charts/stable
# 或使用官方仓库
# helm repo add rancher-stable https://releases.rancher.com/server-charts/stable
helm repo update
9.2 安装 Rancher
ini
# 设置变量
NODE_IP="10.283.9.135"
RANCHER_HOSTNAME="${NODE_IP}.sslip.io"
RANCHER_VERSION="2.13.1"
BOOTSTRAP_PASSWORD='Derdrerb3lrH!'
# 安装 Rancher
helm install rancher rancher-stable/rancher \
--namespace cattle-system \
--set hostname=${RANCHER_HOSTNAME} \
--set ingress.tls.source=secret \
--set ingress.ingressClassName=nginx \
--set privateCA=true \
--set replicas=1 \
--set rancherImage=<your repository>/rancher/rancher \
--set rancherImageTag=v${RANCHER_VERSION} \
--set systemDefaultRegistry=<your repository> \
--set bootstrapPassword="${BOOTSTRAP_PASSWORD}" \
--version ${RANCHER_VERSION}
# 如果使用私有镜像仓库,添加以下参数:
# --set rancherImage=<your repository>/rancher/rancher \
# --set rancherImageTag=v${RANCHER_VERSION} \
# --set systemDefaultRegistry=<your repository> \
9.3 等待 Rancher 就绪
perl
# 等待 Rancher 部署完成
kubectl -n cattle-system rollout status deploy/rancher --timeout=600s
# 查看 Pod 状态
kubectl -n cattle-system get pods
# 查看 Ingress 状态
kubectl -n cattle-system get ingress
十、访问 Rancher
10.1 获取访问地址
bash
NODE_IP="10.283.9.135"
echo "Rancher 访问地址: https://${NODE_IP}.sslip.io"
echo "初始密码: BOOTSTRAP_PASSWORD"

待所有服务都启动完毕,就可以通过Rancher注册或安装集群了。 
10.2 导入 CA 证书到客户端(可选)
由于使用自签名证书,浏览器会提示不安全。可以将 ca.crt 导入到操作系统或浏览器的信任证书中:
bash
# 导出 CA 证书供客户端使用
cat /root/rancher-certs/ca.crt
Windows: 双击 ca.crt → 安装证书 → 本地计算机 → 受信任的根证书颁发机构
macOS: 双击 ca.crt → 添加到钥匙串 → 信任设置为始终信任
十一、证书自动续期验证
11.1 查看证书状态
sql
# 查看证书详情
kubectl -n cattle-system describe certificate tls-rancher-ingress
# 查看证书事件
kubectl -n cattle-system get events --field-selector reason=Issuing
11.2 查看 cert-manager 日志
ini
kubectl -n cert-manager logs -l app=cert-manager -f
11.3 手动触发证书续期(测试用)
perl
# 删除证书 Secret,cert-manager 会自动重新签发
kubectl -n cattle-system delete secret tls-rancher-ingress
# 观察证书重新签发
kubectl -n cattle-system get certificate tls-rancher-ingress -w
十二、常见问题排查
12.1 RKE2 服务启动失败
bash
# 查看日志
journalctl -u rke2-server -f
# 检查配置文件语法
cat /etc/rancher/rke2/config.yaml
12.2 cert-manager Webhook 超时
bash
# 检查 webhook 服务
kubectl -n cert-manager get svc cert-manager-webhook
# 重启 cert-manager
kubectl -n cert-manager rollout restart deploy/cert-manager-webhook
12.3 Rancher Pod 无法启动
ini
# 查看 Pod 日志
kubectl -n cattle-system logs -l app=rancher -f
# 查看 Pod 详情
kubectl -n cattle-system describe pod -l app=rancher
12.4 证书签发失败
perl
# 检查 ClusterIssuer 状态
kubectl get clusterissuer local-ca -o yaml
# 检查 Certificate 状态
kubectl -n cattle-system describe certificate tls-rancher-ingress
# 查看 CertificateRequest
kubectl -n cattle-system get certificaterequest
十三、卸载指南
如需卸载,按以下顺序执行:
perl
# 1. 卸载 Rancher
helm uninstall rancher -n cattle-system
# 2. 删除命名空间
kubectl delete namespace cattle-system
# 3. 卸载 cert-manager
kubectl delete -f cert-manager.yaml
# 4. 删除 cert-manager 命名空间
kubectl delete namespace cert-manager
# 5. 停止 RKE2
systemctl stop rke2-server
systemctl disable rke2-server
# 6. 卸载 RKE2
/usr/local/bin/rke2-uninstall.sh