云原生 云原生系列之:Kubernetes(三)

少年 · 2022年06月17日 · 最后由 liliya-55 回复于 2022年06月20日 · 6226 次阅读

专题合集

《云原生系列专题分享合集》

目录

潜心修炼的那一年

Kubernetes 不是拍脑袋就随便想出来拿来对付 Docker 的项目,Google 内部很早之前就有了一个容器管理的平台,叫做 Borg。

而 Kubernetes ,集成了 Borg 的很多优秀特性,并优化了很多弊端,说是十年磨一剑的产品也不为过。

当时 Kubernetes 刚出来,大家还对它很多特性保留质疑的态度,而几年后,这些优秀特性发挥的作用,大的让人难以想象。

Kubernetes 从 Borg 身上主要汲取了四大特性:

  • Pods

在 Borg 中主要通过抽象类 alloc(resource allocation)来实现资源的分配调度,在单个 VM 可以实现对多个进程的管控,包括日志收集,数据挂载与读取等等。

在 Kubernetes 中 pod 是最小的资源调度单位,属于同一个 pod 的 container 都会被调度到同一个机器上,共享资源。

  • Services

在 Borg 中 service 主要用来管理任务和机器的生命周期,但是也有实现负载均衡的特性。

在 Kubernetes 中 service 用来实现服务名访问和负载均衡。

  • Labels

在 Borg 中容器通常是相同容器集合的一个副本,但是这样无法很好地适配更精细的作业,比如金丝雀发布。

在 Kubernetes 中 label 与 pod 做了个绑定,通过打不同的 label 也能在一样的 pod 当中,分出需要作业的 pod。

  • IP-per-Pod

在 Borg 中所有的任务都使用所在主机的 ip 地址,共享主机的端口,虽然能直接访问外面的网络,但是端口管理变得麻烦。

在 Kubernetes 中每个 pod 都有独属于自己的一个虚拟的 ip,消除了端口管理的麻烦,开发人员可以任意选择自己的端口进行开发。

强强联手的那一年

为了防止 Docker 一家独大,Google & RedHat 等公司联手,纷纷出击。

首先,Docker 切割出 Libcontainer,重命名为 RunC 交由中立的基金会,并共同制定 OCI 标准。

OCI 的提出主要是为了将容器运行时和镜像的实现从 Docker 里面剥离出来,这样其他公司也无需依赖 Docker 的能力来构建容器。

其次,Google & RedHat 等公司共同牵头发起了 CNCF(Cloud Native Computing Foundation) 基金会,希望能围绕 Kubernetes 打造出一个繁荣的生态圈。

这个生态圈的打造,一下子把 Docker 的劣势全部暴露出来,那就是没有深厚的技术底蕴积累。 在编排领域 Docker 拿得出手的也就只有 Swam。

而 CNCF 如火如荼把各大项目都开始拉入自己的阵营,比如 Prometheus,Fluentd,CNI 等等。

不仅如此,Kubernetes 还在不断迭代演化中,把 API 都抽离出来,封装成是可扩展的插件,供大家自定义二次开发自己所需的插件。

这种开源开放的精神,一下子使得更多人涌入到了 CNCF 项目当中,也衍生出了很多开源项目创业公司。

比如现在流行的微服务治理框架 Istio,备受青睐的分布式存储 Ceph,全链路追踪标记的 Jaeger,高性能代理转发 Envoy,纷纷上云,绽放属于自己的光彩。

云原生这个概念,也随着这样的浪潮拍击之下,开始慢慢普及扩展。

尘埃落定的那一年

2017 年,Docker 将容器运行时 Container 捐赠给 CNCF。

2017 年,Docker 改名为 Moby。

2017 年,Docker 宣布 Docker 可内置 Kubernetes。

......

未完待续,有空就开更。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 1 条回复 时间 点赞

期待下一篇鸭🐣

少年 云原生系列之:Container(四) 中提及了此贴 07月29日 16:36
少年 云原生系列专题分享合集 中提及了此贴 08月10日 09:27
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册