Kubernetes与Docker:了解容器和编排

如果您紧跟软件开发的最新趋势,那么无疑会一次又一次遇到两个术语: Docker和Kubernetes ,它们本质上是容器编排的简写。

Docker容器帮助简化了通过开发和测试以及进入生产阶段的应用程序迁移过程,而Docker和Kubernetes都帮助重新构建了应用程序的构建和部署方式-作为微服务的集合而不是单片堆栈。

[发现用于软件开发,云计算,数据分析和机器学习的最佳开源软件: InfoWorld的2019年Bossie Award获奖者 。 | 通过InfoWorld的App Dev Report新闻通讯了解软件开发中的热门话题。 ]

Docker和Kubernetes为什么如此重要,它们如何改变软件开发,以及它们各自在过程中扮演什么角色? 我将在下面尝试回答这些问题。

Docker和容器

容器-在Linux,Windows和其他现代操作系统中受支持-允许软件在与系统其余部分隔离的独立的小型环境中运行。 容器已被比作虚拟机,但它们不是虚拟机,它们更精简,启动和停止更快,更灵活,更可移植。 由于容器可以在几秒钟内旋转或缩小或放大或缩小,因此它们使在诸如云之类的弹性环境中运行应用程序变得更加容易。

Linux和其他操作系统已经支持容器化应用很多年了,但是使用容器并不是完全用户友好的。 Docker,无论是开源的还是商业的,都是使容器成为用户友好和开发人员友好商品的软件。 Docker为容器提供了一组通用的工具和隐喻,因此您可以将应用程序打包在容器映像中,这些映像可以轻松地部署并在您自己的组织或其他地方重复使用。

简而言之,Docker可以轻松创建容器映像,对其进行版本控制,共享,移动它们,以及将它们作为运行中的容器部署到与Docker兼容的主机中。

什么时候使用Docker和容器?

Docker和容器最适合您在处理必须具有以下一项或多项素质的工作负载时:

  • 弹性可伸缩性。 您不知道需要运行多少个应用程序实例才能满足需求。 可以通过部署更少或更多容器实例来扩展容器化应用或服务以满足需求。
  • 隔离。 您不希望该应用干扰其他应用。 也许您将并排运行该应用程序的多个版本,以满足API的不同版本。 或者,也许您想保持底层系统的清洁(总是一个好主意)。
  • 可移植性。 您需要在各种环境中运行该应用程序,并且要求每个设置都具有可复制性。 容器使您可以打包应用程序的整个运行时环境,从而使该应用程序易于部署到您找到与Docker兼容的主机的任何位置,包括开发人员桌面,QA测试机,本地Iron或远程云。

了解有关Docker和容器的更多信息

  • 什么是Docker? 集装箱革命的火花
  • 为什么要使用Docker和容器
  • 开始使用Docker
  • Docker进行质量检查的隐藏优势
  • 12个使Docker更好的开源工具
  • 更多Docker新闻,分析,使用方法,评论和建议

Kubernetes和容器编排

容器的设计主要是为了使进程或应用程序与底层系统彼此隔离。 创建和部署单个容器很容易。 但是,如果您要将多个容器(例如数据库,Web前端,计算后端)组装到可以作为一个整体进行管理的大型应用程序中,而不必担心部署,连接,管理,并分别缩放每个容器? 您需要一种将所有部分编排为功能整体的方法。

这就是Kubernetes要做的工作。 如果集装箱是邮轮上的乘客,那么Kubernetes就是邮轮主管。

Kubernetes基于Google创建的项目,提供了一种方法,可以跨多个主机自动进行多容器应用程序的部署和管理,而不必直接管理每个容器。 开发人员描述了跨多个容器的应用程序布局,包括每个容器如何使用网络和存储的详细信息。 Kubernetes在运行时处理其余部分。 它还处理诸如机密和应用程序配置之类的细微细节的管理。

Kubernetes需要一定的专业知识才能很好地使用,尽管它比以前更像是一个交钥匙解决方案。 易用性方面的某些进步归因于常见应用的简便配方(Helm图表); 部分原因是由知名品牌公司(Red Hat,Canonical,Docker)生产的大量Kubernetes发行版 , 这些发行版与流行的应用程序堆栈和开发框架紧密结合。

什么时候使用Kubernetes和容器编排?

服务于少量用户的简单容器化应用通常不需要编排,更不用说Kubernetes了。 但是,如果应用程序的功能水平不高或用户数量不多,则很难不重新发明编排系统所提供的功能。 这是确定编排何时应进入图片的一些经验法则。

  • 您的应用程序很复杂。 任何涉及两个以上容器的应用程序都可以满足要求。 也就是说,仅通过少量的解决方案(例如Docker群模式)而不是Kubernetes可以精心安排仅服务于少量用户的适度应用。
  • 您的应用对伸缩性和弹性有很高的要求。 Kubernetes和其他协调器使您可以通过描述系统的期望状态,而不是手动编写对变化的条件的反应,来平衡负载并旋转容器以声明式地满足需求。
  • 您想充分利用现代CI / CD技术。 编排系统支持使用蓝/绿部署或滚动升级的应用程序的部署模式。

也许会有一天,Docker和Kubernetes甚至会被更友好的抽象所取代,并让位于更优雅的方式来创建和管理容器。 但是,到目前为止,Docker和Kubernetes对于了解和理解至关重要。

了解有关Kubernetes和编排的更多信息

  • 什么是Kubernetes? 您的下一个应用平台
  • 您应该使用Kubernetes的4个理由
  • 10个Kubernetes发行版引领了容器革命
  • 托管Kubernetes:AWS,Azure,Google Cloud
  • 您好,MicroK8:更简单的Kubernetes
  • Kubernetes的新功能
  • 更多Kubernetes新闻,使用方法,评论,建议和分析

From: https://www.infoworld.com/article/3447659/kubernetes-vs-docker-understand-containers-and-orchestration.html

你可能感兴趣的:(运维,后端,前端)