1.1 初识Kubernetes
Kubernetes是什么?
这是我们第一次听到Kubernetes这个词时都会问的一个问题。官网对Kubernetes的介绍是:Kubernetes是一个移植性和拓展性良好的容器化工作负载和服务管理平台,极大地简化了声明式配置和自动化运维工作。
在聊Kubernetes是什么之前,首先需要理解什么是容器化。本书默认读者已经熟悉容器化技术和其价值,有一定的Docker使用经验,所以这里不准备赘述容器化的概念。
Docker的出现诞生了一种应用交付的新形态:通过容器化技术打包一个应用及其相关依赖,从而真正实现“一次构建到处部署”。从此运维人员基本不再需要操心基础环境不一致引入的复杂“运维矩阵”问题,一个容器镜像可以轻松地在本地开发环境、测试环境、线上生产环境或者公有云环境中几乎无差别地运行起来。
有了Docker之后,随之而来的问题是,一个真正在生产环境中运行的系统往往是由多个容器组成的,部署的环境也往往有多台主机,如何判断哪些容器应该运行在哪些主机上,如何快速在多台主机上启动多个容器?举一个例子来直观地感受一下这个复杂度:现在你有100台机器和1000个容器,通过docker run去运维将会有什么样的体验?很明显这将是一个灾难。Kubernetes的出现就很好地解决了此类问题。
通过Kubernetes可以轻松地管理分布式容器化应用,轻松实现弹性伸缩、负载均衡、滚动更新、故障自愈等能力。也就是说,Kubernetes是一个“容器编排管理解决方案”。
大家肯定记得Docker的徽标(LOGO),如图1-1所示。
图1-1 Docker的徽标
可以看到一只鲸鱼驮着很多的集装箱。没错,这里的集装箱也就是Container,就是我们所说的容器。Docker的徽标含义就是“容器管理工具”,其实很容易联想到现实世界中“驮”着集装箱的是大型货轮。再来看Kubernetes的徽标,如图1-2所示。
图1-2 Kubernetes的徽标
这是一个舵。其实Kubernetes这个单词的中文也是“舵手”的意思,来自于希腊语。可见Kubernetes从诞生之初就定位于“掌舵大货轮”,也就是成为“集装箱管理者”,或者更通俗地说,Kubernetes的含义本就是“容器管理平台”,也就是常说的“容器编排管理平台”。