Kubernetes生态环境读书笔记

Kubernetes 来历

  1. 由google的brog改造而来的开源软件,2014年发布,2015年捐赠给Linux基金会的云计算基础项目CNCF 。
  2. 自 2015 年 7 月发布以来,Kubernetes 已经成为最受欢迎的容器编排引擎。四大公共云服务提供商中有三家——谷歌、IBM 和微软——都提供了一个基于 Kubernetes 的服务平台(CaaS)平台。
  3. 在 2013 年 Docker 出现以后,容器的采用率发生了爆炸式增长,成为了那些想要实现 IT基础设施现代化的企业的焦点。这种爆发的趋势有四个主要原因:
  • 封装:Docker 解决了容器的用户体验问题,使它们更容易打包应用程序。在
    Docker 之前,处理容器是非常困难的(Warden 是个例外,它是由云计算平台抽象出来的)。
  • 分发:自从云计算的出现以来,现代应用程序体系结构逐渐变得更加分散。无论是初创公司还是大型组织机构,都受到 DevOps 这种新方法和合作精神的启发。近年来它们都已将注意力转向了微服务架构。容器比迄今为止的其他各种体系结构设计得更模块化,更适合于支持微服务。
  • 可移植性:开发人员喜欢在任何地方构建应用程序并运行它——将代码从他们的笔记本电脑推向生产环境,并期望它们在没有重大修改的情况下以完全相同的方式工作。随着 Docker 周围广泛积累了更多的工具,其功能的广度和深度更有助于开发人员采用容器。
  • 速度:尽管在 Docker 之前已经存在了容器化的形式,但它们在最初的实现中却启动非常缓慢——在 LXC 的情况下,经常会花费几分钟,而使用 Docker 则把时间缩短为几秒钟。

编排

典型的容器编排平台的基本特征包括 :

  • 调度
  • 资源管理
  • 服务发现
  • 健康检查
  • 自动伸缩
  • 更新和升级

Docker Swarm

图片.png

Docker要求在容器级别进行标准化,并使用 Docker 应用程序编程接口(API)
来处理业务流程和使用底层基础设施。Docker Swarm 使用现有的 Docker API 和网络框架,而不扩展它们,结合 Docker Compose 工具而更适合构建多容器应用程序。它使开发人员和操作人员更容易将一个应用程序从 5 个或 6 个容器扩展到数百个。
注意:Docker Swarm 使用 Docker API,使它可以轻松地适应现有的容器环境。采用Docker Swarm 可能意味着要在 Docker 上孤注一掷,目前,Swarm 的调度器选项是有限的。

Apache Mesos

Apache Mesos 是一个开放源码的集群管理器,它的出现早于 Docker Swarm 和Kubernetes。再加上 Marathon,一个用于基于容器的应用程序的编排框架,它为Docker Swarm 和 Kubernetes 提供了一个有效的替代方案。Mesos 也可以使用其他框架来同时支持容器化和非容器化的工作负载。

图片.png

Mesos 的平台,如图 1.2 所示,显示了节点之间的主/从关系。在这个方案中,分布式应用程序通过一个称为 ZooKeeper 的组件在集群之间进行协调。这个 ZooKeeper 的工作就是为一个集群选择控制节点,或者分配备用控制节点,并用代理逐步分配给每个其它节点。这些代理建立了主/从关系。在 Master 中,主守护进程建立了所谓的“框架”,它像桥梁一样,在主节点和工作节点之间延伸。运行在这个框架上的调度器确定了哪些工作节点可以接受资源,而守护进程则设置了要共享的资源。这是一个复杂的方案,但它的优点是能够适应多种类型和分布式负载的标准,而不仅仅是容器。
与 Docker Swarm 不同,Mesos 和 Marathon 都有自己的 API,这使得它们比其他编配工具更复杂。 然而,Mesos 在支持 Docker 容器和虚拟机(如 VMware vSphere 和KVM)方面更加灵活。Mesos 还支持支持大数据和高性能工作负载框架。
注意: Apache Mesos 是混合环境的完美编配工具,它包含容器和非容器的工作负载。尽管 Apache Mesos 是稳定的,但许多人认为它为容器用户提供了更陡峭的学习曲线。

Kubernetes

谷歌开源项目, 现在是CNCF的一部分, 它可以用很低的运行开销对容器进行互联网级规模的无缝管理。
Kubernetes 并不固定要求容器的格式,并且使用它自己的 API 和命令行接口(CLI)来进行容器编排。


图片.png

它支持多种容器格式,不只是包括 Docker 的,也支持 rkt。

我们之前提到的一个编排器的六个主要特征体现在 Kubernetes 中的以下方面中:

  • 调度:Kubernetes 调度程序确保在任何时候都可以满足对基础设施上的资源的需求。
  • 资源管理:在 Kubernetes 的环境中,资源是编排器可以实例化和管理的逻辑结构,例如服务或应用程序部署。
  • 服务发现:Kubernetes 支持共享系统的服务,可以通过名称来发现。这样,包含服务的 pods 可以在整个物理基础结构中分布运行,而不必保留网络服务来定位它们。
  • 健康检查:Kubernetes 利用称为“活性探针”和“就绪探针”的功能,给编排器
    提供应用程序状态的周期性的指示。
  • 自动伸缩:使用 Kubernetes,当一个 pod 的指定 CPU 资源未被充分利用时,pod 自动伸缩器能自动生成更多的副本。
  • 更新/升级:一个自动化的滚动升级系统使每个 Kubernetes 的部署保持更新和稳定。
    注意:Kubernetes 是由一个非常活跃的社区建立的。它为用户提供了更多的选择来扩展编排引擎以满足他们的需求。由于它使用了自己的 API,所以更熟悉 Docker 的用户将会遇到一些学习难点。

你可能感兴趣的:(Kubernetes生态环境读书笔记)