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

相关推荐
Richardlygo8 分钟前
(k8s)kubernetes集群基于Containerd部署
云原生·容器·kubernetes
林太白2 小时前
❤Node09-用户信息token认证
数据库·后端·mysql·node.js
骆晨学长2 小时前
基于Springboot的助学金管理系统设计与实现
java·spring boot·后端
蒙娜丽宁2 小时前
深入理解Go语言中的接口定义与使用
开发语言·后端·golang·go
nvd112 小时前
K8S - 用service account 登陆kubectl
kubernetes
二进制杯莫停2 小时前
k8s pod网络故障注入,命令行实现
网络·容器·kubernetes
it技术分享just_free2 小时前
基于 K8S kubernetes 的常见日志收集方案
linux·运维·docker·云原生·容器·kubernetes·k8s
小叶子来了啊3 小时前
002.k8s(Kubernetes)一小时快速入门(先看docker30分钟)
java·容器·kubernetes
AskHarries3 小时前
java使用ByteBuffer进行多文件合并和拆分
java·后端
不染_是非3 小时前
Django学习实战篇六(适合略有基础的新手小白学习)(从0开发项目)
后端·python·学习·django