写点什么

如何创建高效、经济的 Kubernetes 集群

  • 2020-04-22
  • 本文字数:3290 字

    阅读完需:约 11 分钟

如何创建高效、经济的Kubernetes集群

Kubernetes 是我主要学习的主题之一。我知道不光是我,还有一定数量的人愿意在工作之余进一步使用和研究它。


本文是介绍关于如何创建一个高效的 Kubernetes 集群,用于在 Scaleway 上使用 Terraform 和 Rancher 2.x 的开发目的。我假设你已经知道了(或者至少听过):


  • Kubernetes

  • Terraform

  • Rancher

  • Scaleway

  • Cloudflare

概述

下图的概要描述了本文尝试实现的内容:



部署工作大部分将由 Terraform 自动完成。我们将创建一个 Rancher 服务器,在上面添加 Rancher 代理来创建和管理 Kubernetes 集群。域解析也将由 Terraform 自动配置到 Cloudflare。所有的服务器都将部署到 Scaleway 上,而且它们非常的便宜(在撰写本文时 Start1-S 服务器只花费€3.99/mo 和€0.008/小时!)

为什么选择 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 记录下来,因为我们之后会用到这个。



同时,前往 Account 页面找到 ORGANIZATION ID 做好记录。到现在为止你已经完成了 Scaleway 的部分,Terraform 会处理好其他事情。


从 Cloudflare 获取 API token

我们需要为创建的 Rancher 服务器设置 DNS,为了实现这一点,我们需要获得 Cloudflare 的 API token。前往 Cloudflare 下的 My Profile,可以在这里找到 API Keys。如下图所示点击 Global API Key 的 View 按钮。



现在记录下这个 token,到这里收集信息的工作结束了。

为 Rancher 服务器准备 Terraform 资源

现在我们已经有了需要收集的信息,那么下一步就是用 Terraform 来部署了。先去克隆 kenfdev/rancher-scaleway 仓库。


首先,前往 rancherserver 目录,按照 terraform.tfvars.sample 创建一个 tfvars 文件,打开它:



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 个资源?

“为什么是 5 个资源?我们刚刚不是只部署了 1 个服务器吗?”你可能会这么问,其实我们确实部署了不止一个资源,我们部署了:


  • 1 个服务器(Rancher 服务器)

  • 1 个为 cloud-init 进程引导 Rancher 服务器的用户数据

  • 1 个安全组

  • 1 条附加到安全组来控制流量的规则

  • 1 条指向 Rancher 服务器的 Cloudflare DNS 记录


这样便添加了 5 个资源,现在点击 yes。如果一切进行顺利,你应该能看到这样的信息:



如果检查 Scaleway 的话:



看起来服务器是部署好了,那 DNS 如何呢?



它看起来也添加到了 Cloudflare!现在我们用这个地址访问 Rancher 服务器:


https://rancher.your.zone/


如果你使用的是 Chrome 的话应该会看到警告提示



这是因为你还没有给服务器设置合法的 SSL 证书。单击左下角的按钮,忽略警告并强制访问页面。



瞧!我们用 1 条命令部署了一个带有 DNS 的 Rancher 服务器!很酷吧!输入你保存在 tfvars 中设置的密码,应该能登陆了。



现在你有了一个正在工作的 Rancher 服务器!你可以在 UI 上开始为各个位置创建 Kubernetes 集群,不过本文不会介绍这些用例。取而代之的,我们将在这里使用 Terraform,在 Scaleway 上创建 Rancher 代理,自动设置这些由 Rancher 服务器管理的集群。

为 Rancher 代理准备 Terraform 资源

返回 kenfdev/rancher-scaleway 仓库。现在,前往 rancheragent 目录。同样复制一份 terraform.tfvars.sample 给 terraform.tfvars。



现在打开 terraform.tfvars:



和 Rancher 服务器时一样填入凭证信息,这里列出一些要记住的变量:


  • 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 上。



选择 yes,服务器就部署好了。几分钟后你可以看到资源部署完毕:



同时,在 Rancher 服务器的 UI 下,你可以看到一个新的集群注册好了。



再过一会,你可以看到 Kubernetes 集群部署完毕(Active)!




这也很酷对吧?我们可以在 Internet(Scaleway)上创建自己的 Kubernetes 集群,而这仅仅通过几行命令!

测试 Ingress 控制器

现在我们可以使用 Kubernetes 集群了,让我们看看 Nginx Ingress 控制器是否按照预期工作。在 rancheragent 目录中,打开 dns.tf 文件并添加下面的信息:



这将创建一个 Cloudflare 记录来指向具有 all roles 的 Rancher 代理节点。点击 terraform apply,在 Cloudflare 设置 DNS。


现在我们访问http://default.your.zone,我们还没有在集群上配置任何 Ingress,因此需要访问默认后端。



嘿!我们可以看到 Ingress 控制器正按我们期望的运作着。

通过 kubectl 访问集群

最后,我们来试试能不能通过 kubectl 访问这个集群。拉取 kubeconfig 十分容易。只要在集群层找到按钮即可:



把 config 文件复制或者下载到 model 上:



用 kubectl 和 KUBECONFIG 获取一些信息



成功获得了关于节点的信息,pods 又是如何呢?



只用了简单的 kubectl 就能轻松获得信息,你也可以通过 Rancher UI 或者 kubectl 部署资源。

清理

如果你想继续使用集群,你可以从这时起继续使用,不过我下面要介绍的是如果你已经使用完毕,该如何把这一切清理掉。

破坏掉 Rancher 代理和 Cloudflare 资源

执行下面的命令:


销毁 Rancher 服务器和 Cloudflare 资源


确保 Scaleway 上没有任何资源了(只有默认的安全组)。否则你还要为这些资源付费。



总结

有好几种方法可以利用这种工作流,而我更倾向于不直接使用 Rancher Server,而是经常创建和销毁 Rancher Agent(以及 Kubernetes 集群)。


2020-04-22 18:32617

评论

发布
暂无评论
发现更多内容

mac菜单栏应用管理软件:Bartender 4 for Mac v4.2.25中文免激活版

你的猪会飞吗

Mac软件下载站 mcc软件

Permute 3 for mac(全能媒体格式转换器) v3.11.4中文版

Mac相关知识分享

Mac Mac软件 音频软件 mac下载

Illustrator 2021 for mac(ai 2021中文版) v25.4.1中文版

Mac相关知识分享

图像处理 AI软件 mac软件下载

如何手撸一个自有知识库的RAG系统

京东科技开发者

入选IDC《数据要素全景研究 2024》,腾讯云大数据引领产业升级

腾讯云大数据

TBDS wedata

万界星空科技MES打造数字化生产车间

万界星空科技

数字化转型 数字化 mes 万界星空科技 数字化车间

通过技术优化财务规划报告,重塑企业体验

智达方通

企业管理 全面预算管理 财务规划 财务报告 财务办公

mac苹果电脑游戏推荐:fm足球经理Football Manager 2023 中文版

你的猪会飞吗

Mac游戏下载 Mac游戏推荐

Shell test [] 命令:条件判断的艺术

左诗右码

Shell

Autodesk AutoCAD 2022 for Mac(cad2022) v2022.2.1中文版

Mac相关知识分享

Mac软件 cad CAD制图软件 制图软件

淘宝官方商品、交易、订单、物流接口列表(淘宝oAuth2.0接口),API稳定、QPS高的方案

tbapi

淘宝店铺订单接口 淘宝店铺订单交易接口 淘宝店铺订单详情接口 淘宝店铺订单物流接口

神州数码与 EMQ 达成合作,共创 AI 时代的行业数据解决方案

新消费日报

FreeRTOS简单内核实现5 阻塞延时

EquatorCoco

Linux FreeRTOS

亚信安慧AntDB数据库与云信达eCloud Data Master 云数据管理系统软件V4完成兼容性互认证

亚信AntDB数据库

AntDB 国产数据库 企业号2024年6月PK榜

利用大模型服务一线小哥的探索与实践

京东科技开发者

性能优化之路总结

京东科技开发者

分布式系统如何做到海量数据边云协同?看 TDengine 油气领域解决方案

TDengine

数据库 tdengine

研发团队的「技术债」如何进行量化管理?

LigaAI

团队管理 研发管理 技术债务 研发度量 企业号 6 月 PK 榜

TG Pro for mac(Mac硬件温度检测工具) v2.89版

Mac相关知识分享

mac软件下载

Shell [[]] 命令:条件判断的升级版

左诗右码

亚信安慧AntDB数据库5月ACP认证圆满落幕

亚信AntDB数据库

AntDB 国产数据库 #数据库 亚信科技

如何创建高效、经济的Kubernetes集群_文化 & 方法_Rancher_InfoQ精选文章