PinkHello
做一个快乐的程序猿
回望K8S 小鲸鱼容器技术

什么是容器

在容器之前, 火爆云计算市场的是 PAAS, PAAS已经深入人心. 那时候突然有一家公司 dotCloud 剑走偏锋, 直接开源出了 Docker 项目,并且直接面向的社区。 这样的做法直接将当时的PAAS流主要公司打的屁滚尿流。

回头看, PAAS 最核心的是隔离环境,或者叫 沙盒,在我看来也就是 容器. 而 Docker 项目和 Cloud Foundry 的容器没有太大的不同,但是它为什么能针对 PAAS进行了一场快速的闪电战呢?

对的, 就是 Docker 镜像, 这个小小的创新, 迅速改变了云计算的发展轨迹! Docker 镜像解决的是 打包 问题。也许有人说Docker 镜像就是一个压缩包。但是就是这个压缩包包含了完整的操作系统文件和目录, 包含了整个应用所需要的依赖,一包在手, 你可以轻易的运行你的沙盒,并且本地环境与云端环境高度一致(这是最宝贵的)。

DockerPAAS进行了致命打击, 提供了便利的打包机制, 面向后端开发者来说, 屏蔽了机器、内核等技术细节, 避免了在不同环境间的差异引入的试错成本。是一次解放生产力的革命。当然很多开发者用脚投票, 了结了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 等涌现了诸如 RancherTutum 等在开源和商业上取得成功的创业公司。 在 DockerGoogleCoreOSReaHat 等公司在云计算大打出手的时候,落在下风的 GoogleCoreOSRedHat 开始忽悠 DockerLibcontainer 项目捐出、组建一个完全独立中立的基金会管理,以 RunC(改名的 Libcontainer )为依据,大家共同制定一套容器和镜像的标准和规范。这套标准和规范就是 OCI(Open Container Initiative), OCI 的提出,将容器运行时和镜像的实现从Docker项目只完全剥离开来。(好一招围魏救赵,改善Docker公司一家独大,其他公司不依赖与Docker项目) 这是第一步,后面就是容器之上的平台层,就是 PAAS 层了,后来GoogleRedHat 等基础设施玩家,共同发起 CNCF(Cloud Native Computing Foundation) 基金会。以 Kubernetes 项目为基础,建立由开源基础设施厂商领导的按照基金会方式运营的平台级社区。

  • Kubernetes 项目必须能够在容器编排领域取得足够大的竞争优势
  • CNCF 社区必须以 Kubernetes 项目为核心,覆盖更多的常见

Kubernetes 当初为什么被认为设计思想过于超前,就是因为 Google 在容器化多年的沉淀和升华(BorgOmega 特性、落在 K8S 上就是 PodSidecar 的功能和设计模式) Kubernetes 当初没有选择和 Swarm 展开同质化竞争,而是提出太多的设计理念和号召力,很快构建了不同的容器编排的管理的生态理念。超过了Swarm项目。有了这个后,又将容器监控事实标准 prometheus融入其中,后面又新增了 FluentdOpenTracingCNDI 等诸多容器生态工具和项目。后面又一记补刀:整个社区进行推进民主化架构, 从 API 到 容器运行时的 每一层, Kubernetes 项目都为开发者暴露出了可以扩展的插件机制, 鼓励社区用户通过代码的方式介入 Kubernetes 项目的每一个阶段。这个操作针对 Docker 来说是致命的,整个容器社区催生了大量的、基于 Kubernetes API 的做扩展的和二次开发创新的

  • 微服务治理项目 Istio
  • 状态应用部署架构 Operator

经过一些列骚操作后,K8S 大行其道,编排之争落下帷幕,容器社区的后续繁荣完全以 Kubernetes 项目为核心的百家争鸣, 从 Rancher项目 的历史迭代过程中也能看出这个精彩纷呈的展现。


最后修改于 2021-05-14