如何创建高效、经济的Kubernetes集群
操作起来要简单快速,既要高效又要省钱,这样的Kubernetes集群怎么搭?
Kubernetes是我主要学习的主题之一。我知道不光是我,还有一定数量的人愿意在工作之余进一步使用和研究它。
本文是介绍关于如何创建一个高效的Kubernetes集群,用于在Scaleway上使用Terraform和Rancher 2.x的开发目的。我假设你已经知道了(或者至少听过):
- Kubernetes
- Terraform
- Rancher
- Scaleway
- Cloudflare
概 述
下图的概要描述了本文尝试实现的内容:
为什么选择Rancher?
如果你想从头开始学习Kubernetes成为一名kubectl魔术师,这个出发点不错,我不反对。不过在我看来,仅仅是学习Kuberenetes是不够的,更重要的是你想用它做什么,你想实现什么。比如,我经常开发微服务和功能来进行测试(特别是webhook集成),并在Kubernetes上运行它。当然,在管理Kubernetes方面kubectl起到了很大的帮助,但是当我想检查某些服务的日志或创建一些secrets时,我不得不使用kubectl输入大量命令创建出大量的清单,这些常让我感到疲惫。有时候我只是想简单地部署一下资源,并不使用清单。我知道有很多工具(如stern、ksonnet等等)可以帮助实现这些工作流,但是我从Rancher 1.x开始就是忠实用户了,知道他们的UI可以让工作变得更简单直观。这也是我为什么在这个工具集中包含Rancher的原因。
让我们开始吧!
话不多说,我们开始部署一些资源吧。这儿有一些准备工作:
- 准备一个Scaleway账号
- 准备一个Cloudflare账号
- 在Cloudflare中设置至少1个zone(你可以得到一个免费的服务域比如Freenom)
- 克隆kenfdev/rancher-scaleway仓库
- 安装terraform
- 安装kubectl
我不会详细解释这些内容,因为如果都写的话这篇文章得爆炸了。你可以自己搜索找到相关的资源。
在这里有一个重要的提示。我们将在Scaleway上部署服务器,这些都不是免费的。所以事先要确认这一点,它会花费一些钱(不过Scaleway非常便宜)。我不会对这些成本承担任何责任,所以如果你完成了,一定要破坏掉它们。
从Scaleway获取信息
我们将在Scaleway上自动部署服务器,为此,我们需要有一个token。在Scaleway中转到Credentials页面并点击Create new token。把Secret key记录下来,因为我们之后会用到这个。
我们需要为创建的Rancher服务器设置DNS,为了实现这一点,我们需要获得Cloudflare的API token。前往Cloudflare下的My Profile,可以在这里找到API Keys。如下图所示点击Global API Key的View按钮。
为Rancher服务器准备Terraform资源
现在我们已经有了需要收集的信息,那么下一步就是用Terraform来部署了。先去克隆kenfdev/rancher-scaleway仓库。
首先,前往rancherserver目录,按照terraform.tfvars.sample创建一个tfvars文件,打开它:
- scw_token – 你的Scaleway Secret Token
- scw_org – 你的Scaleway Organization ID
- admin_password – 你将在Rancher服务器使用的密码
- rancher_server_url – Rancher服务器所使用的URL。Terraform会为你的cloudflare zone设置一个rancher子域名。所以如果你的zone名为example.com,那么terraform会创建一个记录链接到rancher.example.com。
- cloudflare_email – 你Cloudflare中的Email
- cloudflare_token – 你Cloudflare的API token
- cloudflare_zone – 你的Cloudflare zone
你也可以根据你自己的需求修改其他变量。
部署Rancher Server
现在我们准备好了,用Terraform来进行部署吧!点击terraform apply你会看到像下面这样的显示:
“为什么是5个资源?我们刚刚不是只部署了1个服务器吗?”你可能会这么问,其实我们确实部署了不止一个资源,我们部署了:
- 1个服务器(Rancher服务器)
- 1个为cloud-init进程引导Rancher服务器的用户数据
- 1个安全组
- 1条附加到安全组来控制流量的规则
- 1条指向Rancher服务器的Cloudflare DNS记录
这样便添加了5个资源,现在点击yes。如果一切进行顺利,你应该能看到这样的信息:
https://rancher.your.zone/
如果你使用的是Chrome的话应该会看到警告提示
为Rancher代理准备Terraform资源
返回kenfdev/rancher-scaleway仓库。现在,前往rancheragent目录。同样复制一份terraform.tfvars.sample给terraform.tfvars。
- rancher_server_address – Rancher Serve的地址,它可能是一个IP或者域名,不过我建议你在之前的步骤中设置成域名
- count_agent_all_nodes – 统计创建的拥有all roles(etcd, controlplane, worker)的节点数。如果你只是取体验一下Kubernetes集群,那么有一个就足够了。
- count_agent_etcd_nodes – 统计创建的拥有etcd role的节点数
- count_agent_controlplane – 统计创建的拥有controlplane role的节点数
- count_agent_worker_nodes – 统计创建的拥有worker role的节点数
部署Rancher代理
现在再一次点击terraform apply,将rancher代理部署到Scaleway上。
测试Ingress控制器
现在我们可以使用Kubernetes集群了,让我们看看Nginx Ingress控制器是否按照预期工作。在rancheragent目录中,打开dns.tf 文件并添加下面的信息:
现在我们访问 http://default.your.zone ,我们还没有在集群上配置任何Ingress,因此需要访问默认后端。
通过kubectl访问集群
最后,我们来试试能不能通过kubectl访问这个集群。拉取kubeconfig十分容易。只要在集群层找到按钮即可:
清 理
如果你想继续使用集群,你可以从这时起继续使用,不过我下面要介绍的是如果你已经使用完毕,该如何把这一切清理掉。
破坏掉Rancher代理和Cloudflare资源
执行下面的命令:
本文转自DockOne- 如何创建高效、经济的Kubernetes集群
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
什么是Kubernetes?科普文
在过去几年,整个行业逐渐转向开发更小更专业的程序。 越来越多的企业把原先庞大稳定的巨型系统拆分成解耦的独立的组件。 这个方向是正确的。 微型服务有以下几个优点: 快速部署:因为你可以快速的创建并且发布一个小型服务 更容易迭代:因为可以独立的为每个服务添加新功能 更加灵活:就算单个服务(组件)不能使用,其他的服务仍能正常运行。 从产品和开发的角度来说,微服务更完美。 那么这种文化转变是怎样影响基础设施的呢? 管理大规模的基础设施 当你只需要管理几个应用程序时,一切都很简单,你甚至可以用手指算出它们的个数,并且你有足够的时间专注与应用的发布和运维。 在大公司中,管理数百个应用虽然要求很高,但仍是可以做到的。 将会有几个团队专门用于开发,打包,以及发布应用。 另一方面,开发微服务将会带来新的挑战。 对于每个应用,你可能会在重构的时候,将一个应用拆分成四个组件(服务),那么你至少需要四倍的时间去开发,打包,发布这些微服务。 我们常常看到,一个小型服务由多种组件构成,例如前端应用,后台API,一个授权服务器,一个管理应用程序等等。实际上,当你开发了多个微服务,并且这些服务相互交互,你将会看到你的...
- 下一篇
Kubernetes部署实操教程
之前,我们基本都是单体Web应用程序:大型的代码库,随着新的功能和特性不断发展,最后它们都会变成巨大的,缓慢移动的,难以管理的巨人。 现在,越来越多的开发人员,架构师和DevOps专家认为,使用微服务比使用大型单体应用更好。 通常,使用基于微服务的体系结构意味着将你的单体应用分成至少两个应用程序:前端应用程序和后端应用程序(API)。在决定使用微服务之后,出现了一个问题:在什么环境下运行微服务更好? 我应该选择什么来使我的服务稳定,易于管理和部署?简短的回答是:使用Docker! 在本文中,我将介绍容器,解释Kubernetes,并教你如何使用CircleCI将应用程序容器化和部署到Kubernetes集群。 Docker?什么是Docker? Docker是一款旨在让DevOps(和你的生活)更轻松的工具。使用Docker,开发人员可以在容器中创建,部署和运行应用程序。容器允许开发人员使用所需的所有部件(例如库和其他依赖项)打包应用程序,并将其作为一个包发布出去。 使用容器,开发人员可以轻松将镜像(重新)部署到任何操作系统。 只需安装Docker,执行命令,你的应用程序即可启动并运行...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS8编译安装MySQL8.0.19
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Linux系统CentOS6、CentOS7手动修改IP地址
- Docker安装Oracle12C,快速搭建Oracle学习环境