当前位置: 首页 > 科技观察

Kubernetes与Docker:了解容器和编排

时间:2023-03-11 22:59:47 科技观察

人们需要了解Docker和Kubernetes如何改变应用程序开发,以及这些关键的容器技术如何结合在一起。如果你关注软件开发的新趋势,你会一直听到这两个术语:Docker和Kubernetes,它们本质上是容器和编排的同义词。Docker容器帮助简化了将应用程序从开发和测试转移到生产的过程,而Docker和Kubernetes都帮助重新设计了应用程序的构建和部署方式,即作为微服务的集合而不是单个堆栈。为什么Docker和Kubernetes很重要?他们如何改变软件开发?他们各自在这个过程中扮演什么角色?以下是这些问题的一些答案。Docker和容器容器用于Linux、Windows和其他现代操作系统,以允许软件在独立于系统其余部分的小型环境中运行。容器被比作虚拟机,但它不是虚拟机,容器更精简,启动和停止更快,更灵活和便携。由于容器可以在几秒钟内运行或扩展,因此它们可以更轻松地在云平台等弹性环境中运行应用程序。Linux和其他操作系统多年来一直支持容器化应用程序,但使用容器并不完全是用户友好的。无论是开源还是商业,Docker都使容器成为一种用户友好和开发人员友好的商品。Docker为容器提供了一组通用工具,因此用户可以将应用程序打包到容器镜像中,以便在他们自己的组织或其他地方轻松部署和重用。简而言之,Docker使创建容器镜像、对其进行版本控制、共享、移动以及将它们作为运行容器部署到Docker兼容主机变得容易。何时使用Docker和容器?Docker和容器最适合必须具有以下一项或多项特征的工作负载:弹性可扩展。如果用户不知道需要运行多少个应用实例才能满足需求。可以通过部署更少或更多的容器实例来扩展容器化应用程序或服务以满足需求。隔离。用户如果不希望此应用干扰其他应用。也许多个版本的应用程序将同时运行,以适应不同版本的API。或者用户希望保持底层系统干净。可移植性。用户需要在各种环境中运行应用程序,并要求每个设置都是可重现的。容器允许用户打包应用程序的整个运行时环境,使应用程序可以轻松部署在兼容Docker的主机上的任何位置,包括开发人员桌面、QA测试机、本地裸机或远程云。Kubernetes和容器编排容器的主要设计目的是将进程或应用程序与底层系统相互隔离。创建和部署单个容器很容易。但是,如果用户希望将多个容器(例如,数据库、Web前端、计算后端)组装成一个可以作为一个整体进行管理的大型应用程序,而不必担心单独部署、连接、管理和扩展每个容器?用户需要一种方法将所有部分编织成一个功能齐全的整体。这就是Kubernetes所做的。如果说容器是游轮上的乘客,那么Kubernetes就是游轮的指挥官。基于谷歌公司创建的项目,Kubernetes提供了一种无需直接管理每个容器即可跨多个主机自动部署和管理多容器应用程序的方法。开发人员描述跨多个容器的应用程序布局,包括有关每个容器如何使用网络和存储的详细信息。Kubernetes在运行时处理其余部分,它还处理诸如秘密和应用程序配置等琐碎细节的管理。Kubernetes需要一定的专业知识才能很好地使用,尽管它比以前更像是一个交钥匙解决方案。易用性方面的一些进步归功于常见应用程序的简单配方(Helm图表);部分原因是知名厂商(RedHat、Canonical、Docker)发布的大量兼容流行应用程序的Kubernetes发行版堆栈和开发框架紧密耦合。何时使用Kubernetes和容器?为少量用户提供服务的简单容器化应用程序通常不需要编排,更不用说Kubernetes了。但是,如果应用程序的功能或用户数量不多,则很难不重新开发编排系统所提供的功能。以下是确定何时采用容器的一些经验法则。如果申请比较复杂。任何涉及两个以上容器的应用程序都足够了。也就是说,仅服务于少数用户的适度应用程序可以通过少数解决方案(例如Docker群模式)而不是Kubernetes进行编排。如果应用对扩展性和弹性有很高的要求。Kubernetes和其他编排器使用户能够通过描述系统的所需状态来平衡负载,而不是手动编程对不断变化的条件做出反应,并以声明方式运行容器以满足需求。如果您想充分利用现代持续集成(CI)/持续交付(CD)技术。编排系统支持部署或升级应用程序的部署模式。也许有一天,Docker和Kubernetes甚至会被更友好的抽象所取代,并让位于更优雅的创建和管理容器的方式。但到目前为止,Docker和Kubernetes对于了解和理解容器和编排至关重要。