上一篇文章《如何使用Rancher简单快速部署K8S集群》讨论了如何在本地环境中使用若干个虚拟机搭建K8S集群,可用于测试、构建CICD、上线前准备工作等。今天我们继续来讨论下如何利用云厂商的虚机服务(如AWS EC2)来快速搭建个生产可用的K8S集群。
Rancher+K8S部署
Rancher 官方已经为我们提供了非常好的文档,我们来跟着执行就好https://ranchermanager.docs.rancher.com/zh/getting-started/quick-start-guides/deploy-rancher-manager/aws

照着这篇文档,我们只需要准备好aws_access_key
以及aws_secret_key
填入相应的terraform.tfvars
文件中即可 (Terraform会在 Amazon AWS 中配置好服务器和网络等资源 )
插篇介绍,关于Terraform是什么?
Terraform是一种开源的基础设施即代码(IaC)工具,由HashiCorp公司开发和维护。它允许开发人员和系统管理员使用声明性配置语言描述云基础设施和服务,然后使用这些配置自动化地创建、修改和管理基础设施。
更多Terraform使用技巧,可以查看我之前的文章
Terraform 之使用 Dynamic block 实现模块动态加载
接下来就是见证奇迹的时刻!!
我们只需要简单地运行 terraform init
以及 terraform apply --auto-approve
,新创建的K8S集群就稳稳当当跑在AWS 上面啦!

terraform相关日志


从输出日志里我们可以看到Terraform会创建的相关资源(比如 VPC
、 Security group
、以及最重要的VM
等等)
日志的最后,会返回Rancher的server
节点IP以及 访问URL

我们打开URL访问下看看吧!

干净清爽的Rancher界面出现啦!是不是很简单?
从截图我们可以到看到,Rancher已经创建了两个Cluster, 一个是k3s用来跑Rancher自身服务(local
),一个是 Rancher创建的RKE2集群(quickstart-aws-custom
)
关于RKE2 和k3s集群区别,让Chatgpt给简单介绍下吧!

K8S操作
现在我们可以登录到K8S节点后,使用kubectl
操作使用集群!

当然,使用Rancher的最大好处就是我们可以直接通过UI就可以操作K8S相关资源了 ,例如我们可以直接创建Deployment
等

通过应用APP 安装chart
等

添加worker节点
由于目前只是个单节点集群, 我们还可以尝试添加个新的Worker节点,来简单实现集群的高可用。这里,我们可以通过修改Terraform的代码,也可以手动添加ec2节点来实现!
我们先来看看Terraform的代码,找到创建Rancher 以及 RKE2关键代码

可以看到这里会使用到rancher-common
模块来provision整个配置用来创建集群

具体细节就不做分析了,有兴趣的小伙伴可以看下代码。
接下来我们会用手动添加的方式来新起个worker节点,并加入到现有的集群中,正好可以帮助我们来熟悉下RKE2集群是怎么添加节点的!
首先,我们给现有的master节点创建个template,点击"Action
" - "Image and templete
" - "Create template
"


接着,我们会基于这个template来新建EC2作为worker节点, 我们选择launch instance from template

选择好节点类型,其他密钥、网络等配置保持和master一样即可
这里最关键的一步,我们需要更改下 EC2的user data
配置 (worker节点不需要安装controlplane相关组件)

去掉etcd
以及controlplane
参数,只选择worker
,命令如下
bash
curl --insecure -fL https://rancher.44.xxxxx79.sslip.io/system-agent-install.sh | sudo sh -s - --server https://rancher.44.xxxxx206.79.sslip.io --label 'cattle.io/os=linux' --token z2zgw2plx7slmqtxpprxxxxhkx5pjmk5rwkb8xx7r5lw --ca-checksum a17f98eb37220d84b8bc45edd57bexxxxx041f12cff6fd2c0ba79e95991604 --address $publicIP --internal-address $privateIP --worker
这里可以看到其实配置个rke2集群很简单,运行system-agent-install.sh
加入到rancher server即可(我们完全可以新起个vm,手动跑这些命令,这里使用user data的方式自动化这一步)
这样当我们点击创建后,新的worker节点启动后就加入现有的集群啦

我们可以在Rancher UI上看到新的节点以及资源状态


总结
本文探讨了在AWS上运用Rancher快速搭建可靠的K8S集群,通过简单上手体验Rancher的相关功能。最后,我们还演示了如何手动添加新的节点到已有的集群中。希望这能对你创建生产可用的K8S集群提供一些帮助!后续,会介绍更多关于Rancher的进阶玩法,敬请期待!