1
Kubernetes介绍
本章内容涵盖
应用的开发和部署方式在近几年的发展趋势
容器如何保障应用间的隔离性,以及减少应用对部署环境的依赖性
Docker容器如何在Kubernetes系统中应用
Kubernetes如何提高开发人员和系统管理员的工作效率
在过去,多数的应用都是大型单体应用,以单个进程或几个进程的方式,运行于几台服务器之上。这些应用的发布周期长,而且迭代也不频繁。每个发布周期结束前,开发者会把应用程序打包后交付给运维团队,运维人员再处理部署、监控事宜,并且在硬件发生故障时手动迁移应用。
今天,大型单体应用正被逐渐分解成小的、可独立运行的组件,我们称之为微服务。微服务彼此之间解耦,所以它们可以被独立开发、部署、升级、伸缩。这使得我们可以对每一个微服务实现快速迭代,并且迭代的速度可以和市场需求变化的速度保持一致。
但是,随着部署组件的增多和数据中心的增长,配置、管理并保持系统的正常运行变得越来越困难。如果我们想要获得足够高的资源利用率并降低硬件成本,把组件部署在什么地方变得越来越难以决策。手动做所有的事情,显然不太可行。我们需要一些自动化的措施,包括自动调度、配置、监管和故障处理。这正是Kubernetes的用武之地。
Kubernetes使开发者可以自主部署应用,并且控制部署的频率,完全脱离运维团队的帮助。Kubernetes同时能让运维团队监控整个系统,并且在硬件故障时重新调度应用。系统管理员的工作重心,从监管应用转移到了监管Kubernetes,以及剩余的系统资源,因为Kubernetes会帮助监管所有的应用。
注意 Kubernetes是希腊语中的“领航员”或“舵手”的意思。Kubernetes有几种不同的发音方式。许多人把它读成Koo-ber-nay-tace,还有一些人读成Koo-bernetties。不管你用哪种方式,大家都知道你指的是这个单词。
Kubernetes抽象了数据中心的硬件基础设施,使得对外暴露的只是一个巨大的资源池。它让我们在部署和运行组件时,不用关注底层的服务器。使用Kubernetes部署多组件应用时,它会为每个组件都选择一个合适的服务器,部署之后它能够保证每个组件可以轻易地发现其他组件,并彼此之间实现通信。
所以说应用Kubernetes可以给大多数场景下的数据中心带来增益,这不仅包括内部部署(on-premises)的数据中心,如果是类似云厂商提供的那种超大型数据中心,这种增益是更加明显的。通过Kubernetes,云厂商提供给开发者的是一个可部署且可运行任何类型应用的简易化云平台,云厂商的系统管理员可以不用关注这些海量应用到底是什么。
随着越来越多的大公司把Kubernetes作为它们运行应用的最佳平台,Kubernetes帮助企业标准化了无论是云端部署还是内部部署的应用交付方式。