目前,正在影响现代基础设施的两个趋势分别是容器 DevOps。DevOps 生态系统正不断发展,提供着持续集成、持续测试、持续部署和持续监控的功能,从而提高了软件开发的速度。另一方面,容器正与 DevOps 实践相结合,以实现大规模的快速部署。

容器有助于提高开发人员的生产效率,编排工具则是为组织优化其 DevOps 和运营投资提供了帮助。容器编排的优势包括:

  • 高效的资源管理。
  • 无缝扩展的服务。
  • 高可用性。
  • 低成本的大规模运营。
  • 大多数编排工具使用声明性模型(declarative model),可以减少摩擦以实现更自主的管理。
  • 操作模式(Operations-style)像 IaaS,但管理模式类似 PaaS。
  • 跨本地和公共云提供商的操作经验。

操作人员会选择 IaaS 进行控制和自动化,但开发人员通常更喜欢 PaaS,因为它更具有灵活性、规模和生产力,而容器编排工具则是具有两全其美的优势:自动化和规模化。

为什么需要大规模容器编排?

容器解决了开发人员的生产力问题,使 DevOps 工作流变得异常流畅。开发人员可以创建容器镜像,运行容器并在该容器中开发代码,再将其部署在本地数据中心或公共云环境中。这种开发人员的工作流非常流畅,但无法自动应用于生产环境。

生产环境通常与开发人员电脑上的本地环境大不相同。无论是运行大规模的传统三层架构(three-tier)应用程序,还是基于微服务的应用程序,管理大量的容器和节点集群都不是一件容易的事。业务流程是实现规模化的必需组件,想要形成规模我们就必须要实现自动化。

云计算的分布式性质给我们带来了对虚拟机基础设施感知方式的转变。大家可能听过“牛与宠物”的概念,它将容器比作一个牲畜单位而不是喜欢的宠物,以此重塑了人们对容器和基础设施本质的看法。下面我们分别看看“牛”和“宠物”的管理方法:

  • 牛:容器及其基础设施都是不可变的,我们一般在部署容器或服务器后就再也不会对其进行修改。如果需要任何的更新、修复或修改某些内容,我们可以使用有适当更改的通用镜像去构建新的容器或服务器,然后替换旧的容器和服务器。这种方法就相当于在牛场管理牛。
  • 宠物:另一方面,传统的服务器以及虚拟机我们都认为是可更改的,它们更像是宠物,因此不是一次性使用的,我们需要一直关注它们,所以它们的维护成本很高。

不可变基础设施是可编程的,我们可以实现自动化。基础设施即代码(IaC)是现代基础设施的关键属性之一,应用程序可以在其中以编程方式配置,并利用基础设施来运行自身。

容器编排、不可变基础设施和基于 IaC 的自动化,这三者的结合提供了灵活性和可扩展性。

容器编排平台特点

将上述概念付诸于实践后,我们可以对大规模容器的伸缩性和资源可用性概念进行拓展和完善。典型的容器编排平台特征包括:

  • 资源管理。
  • 服务发现。
  • 健康检查。
  • 更新和升级。

容器编排鼓励使用微服务架构模式。在该模式中,应用程序由较小的独立服务组成,每个服务都是为某一项任务而设计的。每个微服务都会打包成一个容器,它们在逻辑上属于同一个应用程序的多个微服务,并由 Kubernetes 进行编排。

目前的容器编排市场由 Kubernetes 主导,它已获得了企业、平台供应商、云提供商和基础设施公司的认可。Kubernetes 的兴起促成了基于容器编排和管理平台的新细分市场诞生。从存储、网络、监控,再到安全,现在涌现出了许多构建容器本机产品和服务的新型公司和初创公司,未来云原生平台和该生态系统将愈发繁荣。

原文地址:https://thenewstack.io/what-is-container-orchestration/