谷歌云Kubernetes (K8s) 深度解析:起源、特性与核心概念
目录
一、Kubernetes 的前世今生:从 Borg 到 K8s
1. 内部基石:Borg 系统的经验与教
2. K8s 的诞生与意义
二、Kubernetes 的核心特点
三、Kubernetes 的最小操作单元:Pod 概念
1. Pod 的定义与组成
2. Pause 根容器的意义
一、Kubernetes 的前世今生:从 Borg 到 K8s
Kubernetes(简称 K8s)是 Google 在 2014 年 6 月开源的一个容器集群管理系统,使用 Go 语言开发。它的目标是使部署容器化的应用变得简单且高效,并努力成为跨主机集群的自动部署、扩展以及运行应用程序容器的平台。
1. 内部基石:Borg 系统的经验与教
在 Docker 作为高级容器引擎迅速发展的同时,Google 也将其在容器技术和集群管理方面的积累贡献出来。在 Google 内部,Borg 系统已经运行和管理着成千上万的容器应用多年,支撑着 Google 搜索、Gmail 等核心服务。
Borg 作为集群管理器,为 Google 提供了三大核心优势:
-
简化开发:隐藏了复杂的资源管理和错误处理,用户只需专注于应用开发。
-
高可用高可靠:保障服务的高可用性和高可靠性。
-
规模化运行:能够将负载运行在由成千上万台机器联合而成的庞大集群中。
Kubernetes 项目正是来源于 Borg,集结了 Borg 设计思想的精华,并吸收了其在生产环境中积累的经验和教训。

2. K8s 的诞生与意义
2014 年 6 月,Google 正式推出 Kuberentes。其名称在希腊语中意为**“船长”或“领航员”**,恰好吻合它作为容器集群指挥者的角色,负担着全局调度和运行监控的职责。
Kubernetes 对计算资源进行了更高层次的抽象,提供了资源调度、部署管理、服务发现、扩容缩容、监控、维护等一整套功能。它原生支持微服务架构,通过在 Service 层次构建集群范围的 SDN 网络,将服务发现和负载均衡放置到容器可达的范围,极大地便利了各个服务间的通信。
2015 年 7 月 22 日,Kubernetes 迭代到 v1.0 并正式对外公布,标志着其可以正式用于生产环境。同时,Google 联合 Linux 基金会及其他合作伙伴成立了 CNCF 基金会 (Cloud Native Computing Foundation),并将 Kuberentes 作为首个项目编入其管理体系。
二、Kubernetes 的核心特点
Kubernetes 的一个核心特点是自动化,能够自主管理容器来保证云平台中的容器按照用户的期望状态运行(即自我修复能力)。
-
可移植性 (Portability):支持公有云、私有云、混合云及多重云(multi-cloud)。
-
可扩展性 (Extensibility):采用模块化、插件化、可挂载、可组合的设计。
-
自动化 (Automation):提供自动部署、自动重启、自动复制、自动伸缩/扩展等功能。
-
服务发现和负载均衡:内置机制简化了服务间的通信。

三、Kubernetes 的最小操作单元:Pod 概念
理解 Pod、Service、Replication Controller 等概念是使用 Kubernetes 的前提。
1. Pod 的定义与组成
Pod 是 Kubernetes 中最小的部署单元,也是 Kubernetes 最重要的基本概念。
-
组成:一个 Pod 由一个或多个容器组成,这些容器共享存储和网络,在同一台 Docker 主机上运行。
-
网络共享:Kubernetes 为每个 Pod 都分配了唯一的 Pod IP 地址,一个 Pod 里的所有容器共享此 IP 地址,并要求底层网络支持集群内任意两个 Pod 之间的 TCP/IP 直接通信。
-
运行环境:Pod 运行在节点(Node)中。

2. Pause 根容器的意义
每个 Pod 都会包含一个特殊的被称为“根容器”或 Pause 容器。引入 Pause 容器的设计主要基于两个原因:
-
状态判断:它作为 Pod 的根容器,以其状态代表整组业务容器的整体状态,解决了在一组容器中难以简单判断整组容器生死状态的问题。
-
资源共享:Pod 里的多个业务容器共享 Pause 容器的 IP 地址,并共享其挂接的 Volume(存储卷),从而简化了密切关联的业务容器之间的通信和文件共享问题。
