如何在AWS上使用Rancher快速部署生产可用的K8S集群

上一篇文章《如何使用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是什么?

www.terraform.io/

Terraform是一种开源的基础设施即代码(IaC)工具,由HashiCorp公司开发和维护。它允许开发人员和系统管理员使用声明性配置语言描述云基础设施和服务,然后使用这些配置自动化地创建、修改和管理基础设施。

更多Terraform使用技巧,可以查看我之前的文章

Terraform之如何使用条件逻辑动态创建资源

Terraform 之使用 Dynamic block 实现模块动态加载

Terraform之结合Workspace实现多环境部署


接下来就是见证奇迹的时刻!!

我们只需要简单地运行 terraform init 以及 terraform apply --auto-approve,新创建的K8S集群就稳稳当当跑在AWS 上面啦!

terraform相关日志

从输出日志里我们可以看到Terraform会创建的相关资源(比如 VPCSecurity group、以及最重要的VM等等)

日志的最后,会返回Rancher的server节点IP以及 访问URL

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

干净清爽的Rancher界面出现啦!是不是很简单?

从截图我们可以到看到,Rancher已经创建了两个Cluster, 一个是k3s用来跑Rancher自身服务(local),一个是 Rancher创建的RKE2集群(quickstart-aws-custom

关于RKE2 和k3s集群区别,让Chatgpt给简单介绍下吧!

www.suse.com/c/rancher_b...

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的进阶玩法,敬请期待!

相关推荐
2401_836836599 小时前
k8s配置管理
云原生·容器·kubernetes
一切顺势而行10 小时前
k8s 使用docker 安装教程
docker·容器·kubernetes
霖檬ing10 小时前
K8s——配置管理(1)
java·贪心算法·kubernetes
澜兮子10 小时前
k8s-服务发布基础
云原生·容器·kubernetes
小安运维日记10 小时前
CKS认证 | Day4 最小化微服务漏洞
安全·docker·微服务·云原生·容器·kubernetes
2401_8368365910 小时前
k8s服务发布进阶
云原生·容器·kubernetes
裁二尺秋风12 小时前
CI/CD — DevOps概念之实现k8s持续交付持续集成(一)
ci/cd·kubernetes·devops
云上小朱15 小时前
问题处理-k8s环境中,hadoop端口9000无法被访问
kubernetes
敖行客 Allthinker19 小时前
云原生安全观察:零信任架构与动态防御的下一代免疫体系
安全·ai·云原生·架构·kubernetes·ebpf