Day 1 - 浅谈 Kubernetes 的架设与管理

本文将於赛後同步刊登於笔者部落格

有兴趣学习更多 Kubernetes/DevOps/Linux 相关的资源的读者,欢迎前往阅读

更多相关科技的技术分享,欢迎追踪 矽谷牛的耕田笔记

对於 Kubernetes 与 Linux Network 有兴趣的可以参阅笔者的线上课程

Kubernetes

近年来 Kubernetes 的声势水涨船高,愈来愈多的产业与团队都在思考是否要引入 Kubernetes 来取代旧有的部署平台。
导入 Kubernetes 自然而来就会产生两个需要讨论的问题

  1. 团队目前的环境需要使用 Kubernetes 吗?
  2. 如果需要使用 Kubernetes,该使用哪一套 Kubernetes ?

第一个问题看似简单,其实非常困难,每个团队原先的部署流程都是独一无二且完全不同的,因此导入 Kubernetes 到底能够带来什麽样的改变?
这类型的改变可能有

  1. 团队是否已经透过容器部署应用程序,如果没有,那想要直接导入 Kubernetes 会是一个非常痛苦的过程,毕竟 Kubernetes 跟单纯 Docker Container 的使用方式有非常大的差异,部署及管理的方式也困难很多
  2. 团队目前是采用公有云的环境来部署还是自行维护机房? 三大公有云基本上都有提供非常多的功能来提供使用者去部署应用程序,有些团队单纯依赖这些服务而不使用 Kubernetes,结果来看整体的运作流程也非常顺畅
  3. 团队人员是否有足够的技术与知识来使用 Kubernetes? 如果没有则导入 Kubernetes 也会是一个很大的过渡期,训练既有人员或是招聘新员工对公司来说都会有成本增加的考量。
  4. 既有工作流程再导入 Kubernetes 之後是否会变轻松? 这部分可以再细分多个小节
    a. 团队的服务是否已经有针对不同流量的水平扩展计画?
    b. 网路流量要如何有效地处理,是否有 Load-Balancer 之类的可以自动地将流量导向後方服务?
    c. 开发跟维运人员要如何更新版本测试

所以作为团队的领导者,切记不要跟风,千万不要因为 kubernetes 是潮流就贸然采用 Kubernetes,我认为一个可以参考的做法是

  1. 让团队中一个熟悉既有运作模式跟架构的员工去学习 Kubernetes
  2. 找出团队目前维运上的痛点
  3. 比较 Kubernetes 如何解决维运上的痛点,这些痛点带来的改善是否直得期待
  4. 如果评估後认为转换有价值,从小服务开始导入来测试,不要一口气直接转换
  5. 也要注意混合过程中,部分服务是k8s,部分服务是原先架构的情况下会不会有什麽问题出现

假设今天决定想要导入 Kubernetes,则接下来谈谈如何管理与架设团队的 Kubernetes 丛集

如何管理 Kubernetes

Kubernetes 本身是个开源专案,既然是个开源专案就意味使用者是有机会直接使用其开源版本的内容来架设属於自己的 Kubernetes 丛集。
但是 Kubernetes 本身架构不算简单,部署虽然容易但是长期的维护与除错这部分需要仰赖对於 Kubernetes 的理解与经验,特别是要与众多服务进行整合时,整个难度又更高。
因此自然而然也会衍生出系统整合商的生意模式,提供一个更好使用且有技术支援的 Kubernetes 平台。
除此之外,公有云本身也都有基於 Kubernetes 提供托管 Kubernetes 丛集的服务,譬如 Azure(AKS), GCP(GKE), AWS(EKS) 等,这类型的服务也都是要额外收费的。

我认为 Kubernetes 平台如何部署与架设,可以用下列的方式去分类

  1. 如果团队打算使用地端(on-premises)环境
    a. 直接於 bare-metal 的机器上使用开源专案来架设所有环境,譬如 K8s,必要时还可以先架设 VM
    b. 找寻相关的系统整合商,请对方提供整体的解决方案,从机器到 k8s 丛集等
  2. 如果团队打算使用云端环境
    a. 直接使用云端的 Kubernetes 服务
    b. 使用云端的 VM 作为主体,上面使用开源专案帮忙架设 Kubernetes 并管理
    c. 找寻相关的系统整合商,请对方提供整体的解决方案,包含使用哪套云端环境,如何架设 k8s 丛集等

不考虑人力的情况下,基本上1(a),2(b)的价格会是相对低的,毕竟你付钱取得机器,後续的架设与管理都要自行处理,其余三个选项都会有额外的金钱成本来购买相对应的服务。
除了成本外还需要考虑到所谓的技术支援。技术支援本身也是需要钱的,团队如果本身没有办法培养熟悉 Kubernetes 的人才,也许用钱买服务是相对简单的方式。
这也是采用开源专案的一个痛点,毕竟纯开源专案的情况下,遇到问题都需要仰赖团队的工程师自行想办法解决。

谈了这麽多种变化,本次系列文没有办法针对所有可能都去探讨与分析,处而代之的则是从开源的角度出发,去探讨如果想要自行管理与维护整个 Kubernetes 丛集的话会有什麽选择。
接下来将使用开源专案 Rancher 作为管理多套 Kubernetes 丛集的平台,Rancher 能够针对上述的 1(a), 2(a,b) 等三个类别去处理,提供了一个友善且强大的管理介面,让团队可以轻松的去架设与管理多套 Kubernetes 丛集。


<<:  观赏鱼辨识系统说明-Day 01

>>:  Day1 30天学会React,其实一点都不难

如何自己设计一套ERP程序 前传-写ERP之前要决定的20件事 决定ERP实施平台 WebForm Or WinForm

第1个决定 决定ERP实施平台 WebForm Or WinForm 写ERP程序之前的第一件事就是...

D7(9/7)-91App(6741) 帮商家做电商的电商专家

注:发文日和截图的日期不一定是同一天,所以价格计算上和当日不同,是很正常的。 声明:这一系列文章并无...

DAY3-JAVA的运算子和运算式

今天就来看看JAVA中的运算子和运算式吧! 这边就先简单介绍一下谁是运算元谁是运算子吧~ int b...

Day 29. Hashicorp Consul: Upgrade

Hashicorp Consul: Upgrade 升级方式: 一次升级一台,透过 consul l...

Week33 - 利用Golang Server与Nats实作简单的Pub/Sub demo [Server的终局之战系列]

嗨大家好,这次要来实作简单的Pub/Sub demo,整体的程序码在Nats-Pub-Sub-Sim...