仅需60秒,使用k3s创建一个多节点K8S集群!
最近,我一向在Kubernetes长举办各类测试和陈设。因此,我不得纷歧次又一次建设和烧毁Kubernetes集群,有的时辰乃至在一个小时内执行好屡次。但因为我必要测试的某个事项必要一个全新的集群,以是简朴地删除全部的pod、service、deployment等,来让集群变得“像新的一样”并没有任何浸染。 同时,我还必要一个尽也许与出产情形相似的集群,以是全部的当地办理方案(如Minikube、Vagrant等)都没有任何浸染。 一开始,我行使了一个云提供商的托管Kubernetes,由于它易于陈设,而且一旦集群启动,我只必要单击一下按钮就可以下载kubectl设置。可是它存在三个题目: 它会耗费许多时刻——每个集群约莫必要10分钟举办陈设。假如我天天都要陈设并烧毁它,那么这些时刻加起来就异常可观了。 必要手动下载与加载kubectl设置文件(这个操纵尽量很简朴,但手动照旧略微贫困) 这是一项托管处事,因此我没有对集群的完全会见权限。 以是我抉择建设一个办理方案,可以让我在云上快速又简朴地陈设和烧毁Kubernetes集群: https://github.com/DavidZisky/60sk3s 最终,我获得了一个简朴的Bash剧本,该剧本可以在Google Cloud上建设假造机,陈设一个4节点的Kubernetes集群(1个主节点和3个worker节点),下载kubectl设置,并将其加载到我的体系中,而完成这统统仅需60秒!从零开始(乃至没有假造机)到可以或许执行kubectl apply -f any_deployment.yaml,仅需不到1分钟!那么详细要怎么操纵呢? 详细需求 于我而言,这一办理方案必要思量的一个重要身分是尽也许可移植。因此我只管让本身不行使太多器材(因此不必要Terraform、Ansible,也不必要安装和设置)。这是为什么我用Bash编写它的缘故起因,而我独一的依靠项是安装和设置了GCloud CLI(带有默认地区和项目集)。 30秒启动假造机 我们从假造机开始。一样平常环境下,在云上建设假造机约莫必要45秒到60秒的时刻。譬喻,在DigitalOcean上,启动假造机(意味着ping开始相应)必要40秒,但你必要特另外15秒来启动其他体系处事(最重要的是,SSH server可以或许吸取毗连)。 以是,起首我们必要让整个流程更快,至少快两倍。 我们可以通过行使内存更小的OS镜像来实现。这就是我僵持用Google Cloud的缘故起因,由于它们提供最小的Ubuntu镜像(小于200MB)。同时,我实行了很多轻量级刊行版,但它们要不就是没有焦点模块,要不就是必要花很长的时刻启动。 在Google Cloud上建设和启动Ubuntu迷你假造机耗费约莫30秒(从GCloud API挪用到SSH Server筹备停当)。那么,我们第一步就完成了,此刻我们接下来看剩下的30秒。 30秒陈设K8S集群 我们应该如安在30秒内陈设一个Kubernetes集群呢?谜底是行使k3s!假如你还没有传闻过k3s,可以翻阅我们往期文章或报名介入本日晚上8点半的在线培训()举办相识。 通过行使k3s,我们不必要为Kubernetes启动和运行劳神太多,由于k3s安装措施会为我们完成这些操纵。以是,我的剧本仅需下载并执行它即可。 将统统都毗连起来 我们通过行使轻量的OS镜像来在30秒之内启动假造机。我们行使了k3s,可以让我们在20秒之内运行Kubernetes。此刻,我们必要将全部的部件毗连在一路。为了完成这一操纵,我们筹备了一个Bash剧本: GCloud呼吁以陈设假造机 在主节点下载并执行k3s安装措施 获取由k3s天生的token,它可用于给集群添加节点 在worker节点上下载并执行k3s安装措施(将token作为参数) 独一的挑衅是获取天生的kubectl设置——Google假造机上的民众IP地点在计较机上是不行见/无法会见的(当你执行“ip addr”或“ifconfig”时,你也无法找到该IP地点)。以是,当k3s天生证书以及kubeconfig时,从外部会见集群是无效的。 但颠末多方面搜刮,我发明白参数“--tls-san=”,它可觉得证诗人成提供特另外IP地点。因此,我们可以通过GCloud呼吁获取IP地点,然后安装k3s时,将其作为参数的值转达。假如k3s陈设在全部节点上,而且worker节点已在master节点上正确注册,那么集群就已经筹备停当。 剩下的最后一件事就是下载kubectl设置(行使scp以从master节点得到文件)。完成全部步调仅需55到58秒。正如你所见,这个办理方案没有什么出格之处,只有几个GCloud和curl呼吁粘贴在一个bash剧本中。但这可以很快完成事变。 下一步是? 起首,当前整个办理方案都颠末硬编码,以具有4个节点的集群(一个主节点和3个worker节点)。使其易于设置,但我还从未测试过更大的集群。但我会尽快添加该选项。 其次,此刻kubectl设置仅供下载(因此你可以将其作为参数转达给kubectl呼吁),或包围现有的kubectl设置(已经可以或许满意我的需求,由于我没有恒久运行的集群)。可是,添加一个将设置附加到现有设置中的成果选项,然后变动上下文,恒久来看是有益的。 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |