如何使用Rancher简单快速部署K8S集群

最近,由于项目需求,研究了Rancher这款优秀的Kubernetes集群管理工具。毫无疑问,它的使用体验非常出色,既简单易上手,同时也在生产环境中表现强劲。我收集了一些相关资料,分享下帮助大家快速上手!本文会先聊聊在本地测试环境中,如何使用rancher快速搭建K8S集群环境。

首先是,Rancher官方的介绍

ranchermanager.docs.rancher.com/zh/

Rancher 是一个 Kubernetes 管理工具,让你能在任何地方和任何提供商上部署和运行集群。

Rancher 可以创建来自 Kubernetes 托管服务提供商的集群,创建节点并安装 Kubernetes,或者导入在任何地方运行的现有 Kubernetes 集群。

Rancher搭建

想本地测试部署真的很简单,使用docker 一键部署, 即可拥有你的Rancher实例(参考官方文档ranchermanager.docs.rancher.com/zh/pages-fo...

css 复制代码
docker run -d --restart=unless-stopped \  -p 80:80 -p 443:443 \  --privileged \  rancher/rancher:latest

打开浏览器页面访问URL https://localhost:443, 获取初始密码就可以登录Rancher UI

有了Rancher之后,下一步我们做什么呢?‍‍‍‍‍

K8S部署

作为K8S管理工具,Rancher既提供了让我们创建新集群的方式,也支持我们导入已创建的K8S集群。我们就先来介绍下怎么用Rancher快速部署K8S集群吧!‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

环境配置

由于是在本地测试,我计划使用3台VM来搭建本地K8S集群(一台master节点,两台worker节点),可以借助Vagrant快速启动我的实验环境!‍

  • master 10.37.129.10 安装docker, kubectl

  • worker-1 10.37.129.11 安装docker

  • worker-2 10.37.129.12 安装docker

Vagrant 具体配置如下:

arduino 复制代码
Vagrant.configure("2") do |config|

config.vm.box = "bento/ubuntu-22.04-arm64"

config.vm.define "master" do | w |

w.vm.hostname = "master"

w.vm.network "private_network", ip: "10.37.129.10"

w.vm.provision "setup-hosts", :type => "shell", :path => "k8s-setup-master.sh" do |s|
end
w.vm.provision "shell", inline: <<-SHELL
    apt-get update
    apt-get install -y git wget vim curl
SHELL

end


config.vm.box = "bento/ubuntu-22.04-arm64"

config.vm.define "worker-1" do | w |

w.vm.hostname = "worker-1"

w.vm.network "private_network", ip: "10.37.129.11"

  
w.vm.provision "setup-hosts", :type => "shell", :path => "k8s-setup-master.sh" do |s|
end
w.vm.provision "shell", inline: <<-SHELL
    apt-get update
    apt-get install -y git wget vim

SHELL

end

config.vm.box = "bento/ubuntu-22.04-arm64"

config.vm.define "worker-2" do | w |

w.vm.hostname = "worker-2"

w.vm.network "private_network", ip: "10.37.129.12"

w.vm.provision "setup-hosts", :type => "shell", :path => "k8s-setup-master.sh" do |s|
end
w.vm.provision "shell", inline: <<-SHELL
    apt-get update
    apt-get install -y git wget vim curl
SHELL
end
end

接着运行 vagrant up , 3台网络互通的VM就启动成功啦!

准备好虚机后, 下一步就可以开始开搞K8S集群啦!

Rancher配置

从Rancher的管理界面点击Create选择自定义然后进入集群的配置, 这次我们会选择部署RKE1集群(RKE1可理解是Rancher发行的K8S版本,具体RKE1 vs RKE2 vs K3S的 区别, 会在之后的文章介绍)

填上Cluster Name, 其他配置基本上按照默认即可(例如网络插件等等,默认选择Canal)

点击下一步:

这里可以看到Rancher为我们提供了RKE部署的相关命令,我们照着分别运行在我们的节点上就好啦!

创建RKE集群

首先,对于K8S集群来说,master节点运行着kubeapischeduler等关键组件,需要被先创建出来,过程如下:

在上图配置页面,我们勾选上etcdcontrolplane 以及worker三个选项,复制如下docker命令

javascript 复制代码
sudo docker run -d --privileged --restart=unless-stopped --net=host -v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run  rancher/rancher-agent:v2.8.0 --server https://10.37.129.3 --token f2tlbmmngglbx5rtlkzr7bb56gbkttztkg59rst4v2h9j6lwcx7rhr --ca-checksum 3545033d9cc350245a0a976d815ce9b10c51ff55167555f32b39c14776679386 --etcd --controlplane --worker

在我们本地VM master节点上运行

运行成功后,会发现K8S controlplane相关组件会以docker容器的方式部署在节点上

接着我们只勾选worker选项

在worker-1、worker-2 节点上运行如下命令

javascript 复制代码
sudo docker run -d --privileged --restart=unless-stopped --net=host -v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run  rancher/rancher-agent:v2.8.0 --server https://10.37.129.3 --token f2tlbmmngglbx5rtlkzr7bb56gbkttztkg59rst4v2h9j6lwcx7rhr --ca-checksum 3545033d9cc350245a0a976d815ce9b10c51ff55167555f32b39c14776679386 --worker

这样我们就通过Rancher成功创建一个k8s集群,是不是很简单!!

打开Rancher UI,我们来查看下集群创建的状态

可以在Workload中查看Pod相关状态

Rancher使用

通过Rancher部署的集群,你会发现我们可以很轻松地管理K8S相关资源,创建部署、监控等等,甚至Rancher内置了很多插件,比如istioprometheus等等让你一键部署到你的集群中**

下一篇,我会继续介绍下如何使用Rancher在AWS云上部署K8S集群,实现生产级别的使用体验!

原文关注 "云原生SRE"

相关推荐
Falling4214 分钟前
使用 CNB 构建并部署maven项目
后端
程序员小假24 分钟前
我们来讲一讲 ConcurrentHashMap
后端
爱上语文32 分钟前
Redis基础(5):Redis的Java客户端
java·开发语言·数据库·redis·后端
萧曵 丶41 分钟前
Rust 中的返回类型
开发语言·后端·rust
高兴达2 小时前
Spring boot入门工程
java·spring boot·后端
伤不起bb2 小时前
Kubernetes 服务发布基础
云原生·容器·kubernetes
到账一个亿4 小时前
后端树形结构
后端
武子康4 小时前
大数据-31 ZooKeeper 内部原理 Leader选举 ZAB协议
大数据·后端·zookeeper
我是哪吒4 小时前
分布式微服务系统架构第155集:JavaPlus技术文档平台日更-Java线程池实现原理
后端·面试·github