使用Rancher管理K3s
rancher中国镜像站地址
https://rancher-mirror.oss-cn-beijing.aliyuncs.com/
https://rancher-mirror.rancher.cn/k3s
rancher 路径和中文镜像的对应关系
参考文档
部署Rancher Manager
在kubernetes 集群上安装/升级 Rancher
在Linux上安装K3s
1、优化镜像拉取
优化containerd的镜像仓库,参考k3s和containerd 。
2、使用命令部署k3s
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn INSTALL_K3S_VERSION=v1.24.9+k3s2 sh -
保存kubeconfig 到你rancher机器上
1、mkdir -p /root/.kube
2、scp root@<IP_OF_LINUX_MACHINE>:/etc/rancher/k3s/k3s.yaml ~/.kube/config
或
cp /etc/rancher/k3s/k3s.yaml ~/.kube/config
在kubeconfig中编辑Rancher Server URL
你需要将 server 字段的值更改为 <IP_OF_LINUX_NODE>:6443。你可以通过端口 6443 访问 Kubernetes API Server,通过端口 80 和 443 访问 Rancher Server。你需要进行此编辑,以便你从本地工作站运行 Helm 或 kubectl 命令时,能够与安装了 Rancher 的 Kubernetes 集群进行通信。
vi ~/.kube/config
3、使用helm 来安装Rancher
helm版本:helm-v3.11.0-rc.2-linux-amd64.tar.gz
1、tar -zxvf helm-v3.11.0-rc.2-linux-amd64.tar.gz
2、mv linux-amd64/helm /usr/local/bin/helm
4、使用helm安装rancher
1、helm repo add rancher-latest https://releases.rancher.com/server-charts/latest
2、kubectl create namespace cattle-system
#从此路径下载cert-manager.crds.yaml
3、kubectl apply -f cert-manager.crds.yaml
4、helm repo add jetstack https://charts.jetstack.io
5、helm repo update
6、安装自签证书
helm install cert-manager jetstack/cert-manager --namespace cert-manager --create-namespace --version v1.7.1
7、安装rancher
helm install rancher rancher-latest/rancher \
--namespace cattle-system \ --set hostname=rancher.my.org \ --set replicas=1 \ --set bootstrapPassword=admin \ --dry-run
1、安装特定的rancher版本: --set rancherImageTag=latest
8、效验rancher运行
kubectl -n cattle-system rollout status deploy/rancher
查看rancher 部署状态:
kubectl -n cattle-system get deploy rancher
编辑rancher 部署:
kubectl -n cattle-system edit deploy/rancher
9、请保存你使用的--set选项。使用Helm 升级Rancher 到新版本时,你将需要使用相同的选项。
10、将新节点添加到k3s集群
k3s agent --server HTTP://HOSTNAME:PORT --token TOKEN
故障处理
Rancher Server Kubernetes 集群的问题排查:
导入k3s集群到rancher 中失败原因:
一、集群添加不成功,一直处于pending状态
1、查看pod状态
kubectl get pods -A
2、查看cattle-cluster-agent容器日志
kubectl logs CONTAINER-NAME -n cattle-system
3、由于客户端配置了hosts,但集群节点不知道 rancher.my.org 对应的是哪个机器。
解决方案
1、在所有节点配置/etc/hosts,先让所有节点都能认识 rancher.my.org。
vim /etc/hosts
#IP rancher.my.org
2、为Agent Pod 添加主机别名(/etc/hosts)

1 kubectl -n cattle-system patch deployments cattle-cluster-agent --patch '{ 2 "spec": { 3 "template": { 4 "spec": { 5 "hostAliases": [ 6 { 7 "hostnames": 8 [ 9 "rancher.my.org" 10 ], 11 "ip": "192.168.56.101" 12 } 13 ] 14 } 15 } 16 } 17 }'
二、导入完成后,一直处于wait状态,dns问题
level=error msg="failed to call leader func: settings.management.cattle.io \"install-uuid\" not found"
level=error msg="failed to call leader func: settings.management.cattle.io \"install-uuid\" not found"
三、报错lockup
kernel:NMI watchdog: BUG: soft lockup - CPU#1 stuck for 29s! [containerd-shim:10281]
解决方案:
echo 30 > /proc/sys/kernel/watchdog_thresh
sysctl -w kernel.watchdog_thresh=30
四、镜像拉取不下来
k3s使用containerd做镜像管理工具,优化containerd的镜像仓库,参考k3s和containerd 。
优化选项
# 修该容器引擎,定义变量 INSTALL_K3S_EXEC
export INSTALL_K3S_EXEC="--docker --write-kubeconfig ~/.kube/config --write-kubeconfig-mode 666"
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -
命令参数解释:
INSTALL_K3S_EXEC="(略)"效果为启动k3s服务时使用的额外参数。
--docker :效果为使用docker而不是默认的containerd。
--write-kubeconfig-mode 666 :效果为将配置文件权限改为非所有者也可读可写,进而使kubectl命令无需root或sudo。
--write-kubeconfig ~/.kube/config :效果为将配置文件写到k8s默认会用的位置,而不是k3s默认的位置/etc/rancher/k3s/k3s.yaml。后者会导致istio、helm需要额外设置或无法运行。
k3s 常用命令
卸载k3s
/usr/local/bin/k3s-uninstall.sh
从agent节点卸载k3s
/usr/local/bin/k3s-agent-uninstall.sh
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下