开发者社区> 云栖号资讯小哥> 正文

在采用K8S之前您必须了解的5件事情

简介: 云栖号资讯:【点击查看更多行业资讯】在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 作者简介 Christopher Tozzi,自2008年来以自由职业者的身份对Linux、虚拟化、容器、数据存储及其相关主题进行报道。
+关注继续查看

云栖号资讯:【点击查看更多行业资讯
在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来!


作者简介 | Christopher Tozzi,自2008年来以自由职业者的身份对Linux、虚拟化、容器、数据存储及其相关主题进行报道。

时至今日,Kubernetes已然成为风靡一时的容器编排调度工具,许多IT分析师均提出了企业应当在何时采用Kubernetes的深刻建议。然而,和所有其他的软件平台一样,Kubernetes并非是一个适用于所有人的灵丹妙药。我更倾向于认为人们在有些时候过分夸大了Kubernetes的作用,以至于他们产生了一种错觉:他们无法离开Kubernetes,而实际上,Kubernetes比他们真正的需求要复杂得多。

1

为了分析人们真正的需求与Kubernetes的匹配程度,我分析了企业在采用Kubernetes编排之前必须考虑的5个事情。

Kubernetes是什么?

如果您关注容器,您可能会知道Kubernetes是一个用于容器编排的开源工具,它可以自动执行诸如启动容器、停止容器以及在同一个容器的不同实例之间的负载均衡等重要任务。

简而言之,Kubernetes的主要目的是最大限度地减少工程师必须手动执行的管理工作量,并通过简化容器操作,帮助企业大规模运行复杂的容器化应用程序。

决定是否采用Kubernetes的关键要素

基于Kubernetes的设立初衷,如果您喜欢自动化,讨厌手动执行重复性的任务,那么Kubernetes无疑是您的极佳选择。

这是您决定是否采用Kubernetes的重要前提,但是,您不能仅根据这一“前提”就决定是否采用Kubernetes。在采用Kubernetes之前,您还需要考虑并权衡其他重要的因素。

1、Kubernetes的基础设施规模

您的基础设施规模是其中一个决定Kubernetes是否能够很好地为您所用的关键要素。

Kubernetes的设计初衷是协调分布在真正庞大的环境中的容器,这往往意味着企业应当拥有数十台主机服务器。根据过往的实施经验,如果基础架构中的服务器少于50个,那么您可能没有足够的资源来利用Kubernetes的全部优势。

这并不是指Kubernetes无法在较小规模的基础设施上运行。实际上,如果您愿意,您可以在单个主机上运行Kubernetes。然而,由于Kubernetes其中的一个研发目的是:通过在数量庞大的集群中分布容器化应用程序提供高可用性,因此,如果您只有少量服务器,则无法享受到Kubernetes的某些价值。

除此之外,考虑到设置和维护Kubernetes的复杂性,如果您的基础设施规模较小,无法完全实现Kubernetes的高可用性承诺,那么或许您不应投入过多时间和精力在Kubernetes上。

对于较小的基础架构,您可以使用较为简单的容器编排工具,或者使用如AWS ECS等具有内置编排的基于云的容器服务。

2、Kubernetes操作系统环境

Kubernetes主要是一种Linux技术。尽管Kubernetes可以用于管理托管Windows服务器上的容器化应用程序,这些应用程序作为Kubernetes服务器集群内的所谓工作节点运行。但托管Kubernetes核心服务的主要服务器或者说主节点必须是Linux。

因此,如果您的商店以Windows为中心,那么Kubernetes并非您的最佳选择。但是您可以选择Rancher轻松将Kubernetes的优势引入Windows,并且极大程度降低使用的复杂性。

3、安装和设置Kubernetes

在决定采用Kubernetes之前,您还需要评估您可以在此项目上投入的工作时间。

普通的开放源代码版本的Kubernetes缺少内置的应用程序,也并未提供一种可以适用于所有默认配置的安装方式。在集群正常运行之前,您需要投入大量的时间从头开始编写及调整配置文件。因此,安装和配置Kubernetes的过程或许是一个令人生畏的过程,您需要投入大量的时间和精力。

部分Kubernetes发行版提供了交互式安装程序脚本,可以帮助您自动执行大部分设置过程。如果您选择Rancher等Kubernetes发行版,则有望在一两天内轻松完成配置及安装。

第三种选择是使用诸如Google Kubernetes Engine等云供应商解决方案,将Kubernetes作为托管服务在云上运行。在这种情况下,您可以自行选择安装及设置。但值得注意的一点是,在确定如何配置Kubernetes环境时,您的选择可能会受到限制。

您必须意识到最为关键的一点:不要低估配置Kubernetes的难度。在您真的要全身心投入Kubernetes之前,请确保您所付出的努力是值得的。另一方面,如果您无法确定为企业在生产集群上安装和部署Kubernetes的难度,您可以尝试使用K3s等轻量级Kubernetes发行版来进行测试,预估后续需要付出多少努力来进行Kubernetes的配置和设置。

4、Kubernetes和声明式配置管理

Kubernetes采用了所谓的声明式配置管理方法,这就意味着,您需要自行编写配置文件来设置Kubernetes应用程序应当如何运行,而Kubernetes将自动指出如何使应用程序符合规范。

声明式配置管理与命令式配置管理相反,在命令式配置管理中,您可以自行配置应用程序的每个组件,并让其按照您所想要的方式运行。

声明式配置是Kubernetes在许多用户实例中如此强大和可伸缩的其中一个原因。您可以设置一次配置,并且根据需要多次应用它。

但是,如果您的配置需求不断变化,或者在工作负载或环境中的不同部分之间变化,那么您应当如何处理呢?在这种情况下,声明式配置管理将成为一个障碍,您将发现自己需要不断地调整先前认为是“一劳永逸”的配置文件。

因此,在您选择采用Kubernetes之前,您需要考虑应用程序的配置需求。只有当您所需要的配置相对通用且静态时,Kubernetes才是一个不错的选项。

5、Kubernetes和多云

Rancher等部分Kubernetes发行版的主要功能之一,是单个Kubernetes部署可以编排多个集群,无论集群位于在不同的公有云还是私有云上。这一功能使Kubernetes成为协助控制多云架构复杂性的优秀工具。

在跨多云部署容器化应用程序,并且Kubernetes的设置和配置工作很合理时,多云上的Kubernetes是十分有意义的。

在这一因素中,您需要留意的是,在考虑是否以及何时采用Kubernetes时,应考虑您当前的多云战略以及多云扩展计划。

结 语

Kubernetes是一个非常棒的工具,在正确设置的情况下,它可以产生巨大的价值。但是,它并没有达到杀手级应用程序的状态,因为它无法在所有用户实例中交付价值。在您被巨大的宣传攻势攻陷,并确定您无法离开Kubernetes之前,请清醒地对自己的需求进行评估,明确Kubernetes是否能在真正意义上帮助您更加有效、更加可靠地运行应用程序。

【云栖号在线课堂】每天都有产品技术专家分享!
课程地址:https://yqh.aliyun.com/live

立即加入社群,与专家面对面,及时了解课程最新动态!
【云栖号在线课堂 社群】https://c.tb.cn/F3.Z8gvnK

原文发布时间:2020-06-24
本文作者:hristopher Tozz
本文来自:“dockone”,了解相关信息可以关注“dockone”

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Kubernetes----Kubernetes学习从入门到实战循序渐进系列篇
Kubernetes----Kubernetes学习从入门到实战循序渐进系列篇
1053 0
Kubernetes集群方方面面实战教程学习线路指南
Kubernetes集群方方面面实战教程学习线路指南
419 0
『Kubernetes』在k8s中部署Dashboard可视化面板
📣读完这篇文章里你能收获到 - 保姆级的K8S安装Dashboard - 可视化管理Kubernetes
428 0
用JAVA打印菱形(利用for循环)详细注释
用JAVA打印菱形(利用for循环)详细注释
4138 0
SpringBoot到底是什么?如何理解parent、starter、引导类以及内嵌Tomcat?(二)
SpringBoot到底是什么?如何理解parent、starter、引导类以及内嵌Tomcat?(二)
1816 0
【Linux基础篇三】为什么说在Linux世界里,一切皆文件?
【Linux基础篇三】为什么说在Linux世界里,一切皆文件?
3853 0
【Java设计模式】UML类图六大关系总结(含代码)(一)
【Java设计模式】UML类图六大关系总结(含代码)(一)
1505 0
【计算机网络】应用层 : DNS 域名解析系统 ( 域名 | 域名服务器 | 域名解析过程 | 递归查询 | 迭代查询 | 高速缓存 )
【计算机网络】应用层 : DNS 域名解析系统 ( 域名 | 域名服务器 | 域名解析过程 | 递归查询 | 迭代查询 | 高速缓存 )
256 0
【MaxCompute 常见问题】 Java SDK
如何在 MaxCompute Java SDK 上使用 Logview 排错? MaxCompute Java SDK 提供了 Logview 接口 i = SQLTask.run(odps, sql); String logview = odps.logview().generateLogView(i, 7 * 24);
474 0
+关注
云栖号资讯小哥
云栖号小编在此 ^o^
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载