回望K8S 小鲸鱼容器技术
什么是容器
在容器之前, 火爆云计算市场的是 PAAS
, PAAS
已经深入人心. 那时候突然有一家公司 dotCloud 剑走偏锋, 直接开源出了 Docker
项目,并且直接面向的社区。 这样的做法直接将当时的PAAS
流主要公司打的屁滚尿流。
回头看, PAAS
最核心的是隔离环境,或者叫 沙盒
,在我看来也就是 容器
. 而 Docker
项目和 Cloud Foundry
的容器没有太大的不同,但是它为什么能针对 PAAS
进行了一场快速的闪电战呢?
对的, 就是
Docker
镜像, 这个小小的创新, 迅速改变了云计算的发展轨迹!Docker
镜像解决的是打包
问题。也许有人说Docker
镜像就是一个压缩包。但是就是这个压缩包包含了完整的操作系统文件和目录, 包含了整个应用所需要的依赖,一包在手, 你可以轻易的运行你的沙盒
,并且本地环境与云端环境高度一致(这是最宝贵的)。
Docker
给PAAS
进行了致命打击, 提供了便利的打包机制, 面向后端开发者来说, 屏蔽了机器、内核等技术细节, 避免了在不同环境间的差异引入的试错成本。是一次解放生产力的革命。当然很多开发者用脚投票, 了结了PAAS
时代。
Docker
三大利器
Docker
项目的高调开源, 解决了打包和发布困扰运维的技术难题,同时它也第一次纯后端的概念通过友好的设计和封装交付到了开发者的手里。Swarm
,Docker
是创建和启停容器的工具,那么Swarm
是为了向平台化发展而提出的。它提供了完整的整体对外提供集群管理功能,它的亮点是完全使用Docker
原本的管理容器的API来完成集群管理
# Swarm多机环境下,指令会被Swarm拦截处理,后面通过调度算法找到合适的Docker Daemon运行
docker run -H "Swarm集群API" "我的容器"
Compose
(Fig)项目, 这是第一次在开发者面前提出容器编排
(Container Orchestration)概念。
应用容器 A, 数据库容器B, 负载均衡容器C, Compose 允许 A、B、C 三个容器定义在配置文件中, 并指定关联关系. 只需要执行 (fig/docker-compose up)
容器化群雄并起与尘埃落定
容器开启火爆模式, 大量围绕 Docker
项目的网络、存储、监控、CI/CD
、UI 等涌现了诸如 Rancher
、Tutum
等在开源和商业上取得成功的创业公司。
在 Docker
、 Google
、CoreOS
、ReaHat
等公司在云计算大打出手的时候,落在下风的 Google
、CoreOS
、RedHat
开始忽悠 Docker
将 Libcontainer
项目捐出、组建一个完全独立中立的基金会管理,以 RunC
(改名的 Libcontainer
)为依据,大家共同制定一套容器和镜像的标准和规范。这套标准和规范就是 OCI
(Open Container Initiative
),
OCI
的提出,将容器运行时和镜像的实现从Docker
项目只完全剥离开来。(好一招围魏救赵,改善Docker
公司一家独大,其他公司不依赖与Docker
项目)
这是第一步,后面就是容器之上的平台层,就是 PAAS
层了,后来Google
、RedHat
等基础设施玩家,共同发起 CNCF
(Cloud Native Computing Foundation
) 基金会。以 Kubernetes
项目为基础,建立由开源基础设施厂商领导的按照基金会方式运营的平台级社区。
Kubernetes
项目必须能够在容器编排领域取得足够大的竞争优势CNCF
社区必须以Kubernetes
项目为核心,覆盖更多的常见
Kubernetes
当初为什么被认为设计思想过于超前,就是因为 Google 在容器化多年的沉淀和升华(Borg
和 Omega
特性、落在 K8S
上就是 Pod
、Sidecar
的功能和设计模式)
Kubernetes
当初没有选择和 Swarm
展开同质化竞争,而是提出太多的设计理念和号召力,很快构建了不同的容器编排的管理的生态理念。超过了Swarm
项目。有了这个后,又将容器监控事实标准 prometheus
融入其中,后面又新增了 Fluentd
、OpenTracing
、CNDI
等诸多容器生态工具和项目。后面又一记补刀:整个社区进行推进民主化
架构, 从 API 到 容器运行时的 每一层,
Kubernetes
项目都为开发者暴露出了可以扩展的插件机制, 鼓励社区用户通过代码的方式介入 Kubernetes
项目的每一个阶段。这个操作针对 Docker
来说是致命的,整个容器社区催生了大量的、基于 Kubernetes API
的做扩展的和二次开发创新的
- 微服务治理项目
Istio
- 状态应用部署架构
Operator
- …
经过一些列骚操作后,K8S 大行其道,编排之争落下帷幕,容器社区的后续繁荣完全以 Kubernetes
项目为核心的百家争鸣, 从 Rancher
项目 的历史迭代过程中也能看出这个精彩纷呈的展现。