为什么需要kubernetes这样的容器编排系统

2021年8月25日15:55:17 发表评论 1,109 ℃

Docker 本身非常适合管理单个容器,若运行的是构建于有限几个或十几个容器上的应用程序,则可以仅在 Docker 引擎上自主运行,部署和管理这些容器并不会遇到太大的困难。然而,对于包含成百上千个容器的企业级应用程序来说,这种管理将变得极其复杂,甚至无法实现。

容器编排是指自动化容器应用的部署、管理、扩展和联网的一系列管控操作,能够控制和自动化许多任务,包括调度和部署容器、在容器之间分配资源、扩缩容器应用规模、在主机不可用或资源不足时将容器从一台主机迁移到其他主机、负载均衡以及监视容器和主机的运行状况等。

为什么需要kubernetes这样的容器编排系统

容器编排系统用于完成容器编排相关的任务。以 Kubernetes、Mesos 和 Docker Swarm等为代表的这类工具通常需要用户在 YAML 或 JSON 格式的配置清单中描述应用程序的配置,以指示编排系统在何处检索容器镜像(私有仓库或者某外部仓库)、如何在容器之间建立网络、在何处存储日志以及如何挂载存储卷等。确定调度目标后,编排工具将根据预定规范管理容器的生命周期。

概括来说,容器编排系统能够为用户提供如下关键能力。

集群管理与基础设施抽象:将多个虚拟机或物理机构建成协同运行的集群,并将这些硬件基础设施抽象为一个统一的资源池。

资源分配和优化:基于配置清单中指定的资源需求与现实可用的资源量,利用成熟的调度算法合理调度工作负载。

应用部署:支持跨主机自动部署容器化应用,支持多版本并存、滚动更新和回滚等机制。

应用伸缩:支持应用实例规模的自动或手动伸缩。

应用隔离:支持为租户、项目或应用进行访问隔离。

服务可用性:利用状态监测和应用重构等机制确保服务始终健康运行。

Kubernetes、Mesos 和 Docker Swarm 一度作为竞争对手在容器编排领域三分天下,但这一切在 2017 年发生了根本性的变化,因为在这一年发生了几个在容器生态发展史上具有里程碑式意义的重要事件。

一是 AWS、Azure 和 Alibaba Cloud 都相继在其原有容器服务上新增了对 Kubernetes 的支持,甚至 Docker 官方也在 2017 年 10 月宣布同时支持 Swarm 和Kubernetes 编排系统。

二是 rkt 容器派系的 CoreOS 舍弃掉自己的调度工具 Fleet,将商用平台 Tectonic 的重心转移至 Kubernetes。

三是 Mesos 也于 2017 年 9 月宣布了对Kubernetes的支持,其平台用户可以安装、扩展和升级多个生产级的 Kubernetes 集群。

四是 RancherLabs 推出了 2.0 版本的容器管理平台并宣布将全部业务集中于Kubernetes,放弃了其多年内置的容器编排系统Cattle。这种局面显然意味着Kubernetes已经成为容器编排领域事实上的标准。后来,Twitter、CNCF、阿里巴巴、微软、思科等公司与组织纷纷支持Kubernetes。

以上种种迹象表明,Kubernetes 已成为广受认可的基础设施领域工业标准,其近两三年的发展状态也不断验证着 Urs Holzle 曾经的断言:无论是公有云、私有云抑或混合云,Kubernetes 将作为一个为任何应用、任何环境提供容器管理的框架而无处不在。

【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: