Rancher可以帮助我们管理k8s集群,如果Rancher不可用,被管理的集群仍然可以正常使用。
但是,管理k8s集群没有管理软件怎么行,因此Rancher的高可用是有必要的。
官方的建议将Rancher部署在专用的集群上(我称为管理集群),然后用它来管理工作集群,下面是搭建管理集群的步骤,写这个文档的时候,最新的Rancher版本是 2.7.1。
FAQ: Rancher is No Longer Needed
If Rancher is ever deleted or unrecoverable, all workloads in the downstream Kubernetes clusters managed by Rancher will continue to function as normal.
版本
K3S
: v1.24.10+k3s1
helm
: 3.2.4-1
Rancher
: v2.7.1
cert-manager
:v1.11.0
版本兼容性清单
K3S / Rancher
: https://www.suse.com/suse-rancher/support-matrix/all-supported-versions/rancher-v2-7-1/helm / rancher / k8s
: https://ranchermanager.docs.rancher.com/getting-started/installation-and-upgrade/resources/helm-version-requirementscert-manager / k8s
:https://cert-manager.io/docs/installation/supported-releases/
准备工作
服务器规划
IP | 规格 | 用途 |
---|---|---|
10.11.12.80 | 2C1G | rancher LB、MySql 代理 |
10.11.12.85 | 4C4G | K3S Server node |
10.11.12.86 | 4C4G | K3S Server node |
一台机器做LB,另外两台机器安装K3S集群,没有Agent节点
安装 docker
K3S默认使用containerd,如果要用docker的化就需要安装
1 | curl https://releases.rancher.com/install-docker/20.10.sh | sh |
LB 节点
nginx
1 | docker run -d --privileged --name nginx \ |
配置文件(代理了数据库和Rancher的web)
1 | worker_processes 4; |
服务节点
https://docs.rancher.cn/docs/rancher2/installation/install-rancher-on-k8s/_index
服务节点就是用于安装rancher的k8s集群
dns for LB
服务节点(85,86)配置host /etc/hosts
1 | 10.11.12.80 rancher-lb.lan |
安装 k3s Server 节点
此步骤每个服务器上都需要操作
敌对势力环境
1 | curl -sfL https://get.k3s.io | INSTALL_K3S_VERSION=v1.24.10+k3s1 sh -s - server \ |
大国崛起环境
1 | curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn INSTALL_K3S_VERSION=v1.24.10+k3s1 sh -s - server \ |
注意:
多个节点安装使用相同的配置
k3s 的版本与rancher版本兼容性
如果要删除
1 | Server 节点 |
解决/etc/rancher/k3s/k3s.yaml
权限导致的kubectl命令执行失败(重要)
在 当前用户的.profile
加入 export KUBECONFIG=~/.kube/config
,然后执行
1 | source ~/.profile |
支持命令行提示
1 | sudo apt install bash-completion |
查看状态
1 | kubectl get nodes |
1 | kubectl get pods -A |
Helm 安装
此步骤每个服务器上都需要操作
1 | sudo apt-get install apt-transport-https --yes |
注意:当前rancher版本要求安装3.2.x的helm
helm-version-requirementsocs
常用命令
1 | 查看helm部署 |
添加Helm仓库
1 | 国际 |
为Rahcher创建namespace
1 | kubectl create namespace cattle-system |
配置TLS
方式一:(外部TLS)
安装rancher时添加参数--set tls=external
方式二:安装cert-manager
版本兼容关系 https://cert-manager.io/docs/installation/supported-releases/
1 | helm repo add jetstack https://charts.jetstack.io |
官方参考
https://cert-manager.io/docs/installation/kubectl/
https://cert-manager.io/docs/installation/helm/
检查状态
1 | kubectl get pods --namespace cert-manager |
使用外部TLS
1 | 安装 |
helm: https://artifacthub.io/packages/helm/rancher-stable/rancher/
查看状态
1 | kubectl -n cattle-system rollout status deploy/rancher |
访问Rancher Web
在电脑上添加host 10.11.12.80 rancher-admin.j3east.lan
打开 https://rancher-admin.j3east.lan
主界面
功能菜单
安装总结
距离上一次安装已经3年了,之前写的文档在这里,这次再战k8s熬了3个夜晚,感觉这次把架构搞清楚了。安装过程中有以下坑点:
- 最大的敌人是网络,需要为各种环境切换代理,也有代理不生效的地方,浪费了大量时间
- 因为不熟悉,中途出错了,花了时间还是不能解决只能推到重来
- 没有对版本兼容性做功课,网上东拼西凑看的文章合在一起,做到中间才发现不兼容
- 个人有强迫症,有瑕疵不能忍,要用最新版本。
- 所有问题在第一点的加持下时间翻倍
此外,如果是生产环境使用,证书问题可能需要考虑下自签是否合适。
排错
Kubernetes
1 | kubectl get event -n cattle-system |
参考资料
官方K3S文档
K3S官方文档
Rancher 2.7 高可用部署
ha-with-external-db
官方关于国内安装的建议
kubectl cheatsheet