如何使用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"

相关推荐
ITPUB-微风几秒前
云原生监控体系建设:Kubernetes架构下的全面监控策略
云原生·架构·kubernetes
hjnjmjkj6 分钟前
基于windows的docker-desktop安装kubenetes以及dashboard
docker·容器·kubernetes
坚定信念,勇往无前1 小时前
springboot单机支持1w并发,需要做哪些优化
java·spring boot·后端
老友@1 小时前
OnlyOffice:前端编辑器与后端API实现高效办公
前端·后端·websocket·编辑器·onlyoffice
风月歌2 小时前
基于springboot校园健康系统的设计与实现(源码+文档)
java·spring boot·后端·mysql·毕业设计·mybatis·源码
m0_748239473 小时前
Spring Boot框架知识总结(超详细)
java·spring boot·后端
m0_748236113 小时前
Spring Boot 实战:轻松实现文件上传与下载功能
linux·spring boot·后端
m0_748245923 小时前
Spring Boot(七):Swagger 接口文档
java·spring boot·后端
青灯文案14 小时前
如何在 SpringBoot 项目使用 Redis 的 Pipeline 功能
spring boot·redis·后端
m0_748249544 小时前
SpringBoot教程(三十二) SpringBoot集成Skywalking链路跟踪
spring boot·后端·skywalking