如何 0 成本启动全员 AI 技能提升?戳> 了解详情
写点什么

如何创建高效、经济的 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:32774

评论

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

英特尔分享进军独显市场的背后思考

科技新消息

Swoole中的协程使用相关说明,快来围观

CRMEB

大数据培训学习程序员有必要吗

@零度

大数据开发

Hoo虎符研究院|Cradle调研报告

区块链前沿News

虎符 Hoo 虎符研究院

培训学习选择java好还是前端好

@零度

JAVA开发 web前端

在MAUI中使用Masa Blazor

MASA技术团队

C# .net 微软 组件 组件库

EasyCV开源|开箱即用的视觉自监督+Transformer算法库

阿里云大数据AI技术

算法 计算机视觉 开源技术

眼见不一定为实:调用链HBase倾斜修复

捉虫大师

HBase 数据倾斜 4月月更

源码解析Synchronous Queue 这种特立独行的队列

华为云开发者联盟

MQ 堆栈 队列 Synchronous Queue 公平队列

什么是敏捷开发,敏捷开发落地指南之迭代排期

阿里云云效

云计算 阿里云 敏捷开发 研发 研发敏捷

javaScript深拷贝和浅拷贝简单梳理

程序猿布欧

JavaScript 前端 深拷贝 浅拷贝 深拷贝与浅拷贝

BIGO 的数据管理与应用实践

NebulaGraph

数据库 图数据库 数据管理

揭秘华为云GaussDB(for Influx):最佳实践之数据建模

华为云开发者联盟

MySQL 数据建模 数据模型 华为云 GaussDB(for Influx)

为安全而生!浪潮云参编的《数据安全法》实施参考(第一版)重磅发布

云安全

《数字经济全景白皮书》Z世代用户洞察篇(3)重磅发布!

易观分析

用户分析 Z世代

一文详解Java日志框架JUL

华为云开发者联盟

Java 日志 框架 日志框架 JUL

宣布 Databricks 支持 Amazon Graviton2,性价比提高 3 倍

亚马逊云科技 (Amazon Web Services)

Tech 专栏

Go单体服务开发最佳实践

万俊峰Kevin

微服务 单体架构 web开发 go-zero Go 语言

【易安联】安全都是有边界的,零信任也不例外

极客天地

JavaScript的事件循环机制浅析

程序猿布欧

JavaScript 前端 前端面试 防抖节流

想参加培训学习web前端不知道靠不靠谱

@零度

web前端开发

【阿里云大咖说】填问卷送好礼正式上线,快来参与吧!

大咖说

大咖说 问卷 礼品

OpenHarmony 技术日直播回顾丨共建新技术,开拓新领域

OpenHarmony开发者

OpenHarmony 技术日

知识管理:新时代企业竞争力核心

小炮

企业知识管理 企业知识管理工具

“一个扫描枪一张表”,韵达选择 TDengine 应对每日亿级数据量

TDengine

数据库 tdengine

双许可、先决条件、附加条款……开源许可证的疑难杂问

一君

这是一个有关自律的复杂故事

Coffee Cat

数据分析 监控 自律 跑步 可观测

活动预告 | 洞见科技纪凯受邀出席「隐私计算应用与发展论坛」

洞见科技

企评家,助力创业板企业成长性评价

企评家

企业评价 企业大数据 创业板 评价维度 成长性

新零售SaaS架构:组织管理的底层逻辑与架构设计

AI架构师汤师爷

系统架构 SaaS 架构设计 组织架构

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