在公司,你不可能没有听到过有关Kubernetes的信息,来自谷歌的red hot容器编排技术通常是大家茶余饭后的聊天话题。
很少有一种技术可以让从DevOps实习生到首席技术官(CTO)都能轻松的理解,Kubernetes也不例外,阅读有关Kubernets的文章反而会让你比以前更困惑,无法理解这些文章到底在讲些什么。当然,也有许多人认为Kubernetes是神级存在,但如果你想很好的使用Kubernetes并充分发挥它的作用,这取决于很多因素,我打算解释其中一些关键因素。
在本文中我还将为你提供一种渐进式评估Kubernetes并将其引入公司的方法。Kubernetes是一项伟大的技术,如果使用得当,它将带来巨大的好处。
1. 从一个到一群
曾几何时,服务器被系统管理员亲切地命名并贴上便利贴。而现在,我们真的不知道运行我们工作任务的服务器是什么类型的,因为那些位于冷服务器室和数据中心的灰色机架上的盒子已经让位于由Amazon、Microsoft和谷歌运行的公共云。系统管理员也会继续给运行在公共云上的虚拟机命名,就像给他们的宠物命名一样。过去,如果需要服务器,可能需要几周的时间,通过电话或电子邮件与销售人员沟通,才能最终获得我们所需的服务。但是随着高性能虚拟化和公共云的出现,出现了API。一个简单的API调用可以在几秒钟内启动一台机器。而在过去,需要花上几周的时间跟销售人员沟通。因为这样,很快,聪明的技术人员意识到,公共云不仅可以提供对计算的快速访问,还有通过简单易用的RESTful API提供自动化的潜力。这是相当有含金量的事情。
2. 作为代码和DevOps的基础设施
之后我们看到了像Chef、Puppet、Ansible和SaltStack这样的技术。有了这些,开发和运维之间的界限开始变得模糊。虽然系统管理员很少会冒险修改shell脚本,但是像Chef、Puppet和Ansible这样的系统都是成熟的系统编排框架。Puppet使用领域特定的语言或DSL来让系统管理员定义基础设施设置的最终状态,而Chef使用基于Ruby语言的DSL,该DSL充分利用Ruby的表现力来定义基础设施的最终状态。这些技术使我们完全进入了声明式和命令式基础设施的时代,在这个时代,可以使用文件中的代码定义服务器基础设施的最终状态,然后可以像常规源代码一样对其进行版本控制。这与系统管理员手动设置服务器,然后登录到服务器上设置各种软件服务和硬件资源(如存储或网络)非常不同。虽然他们所能做的仅仅是运行shell脚本,但是Chef和Puppet提供了对系统配置的集中管理,以及非常强大的API接口,使管理大量服务器变得不那么麻烦。