容器、Docker和Kubernetes简介


【编者的话】本文简要介绍了容器和Kubernetes诞生的背景,及各自的功能和特点,最后推荐了开源Kubernetes管理平台Ohana。

我们所处的数字时代是一个以工业化向信息化的快速转变为特征的时代,它是世界经济发展的推动力。随着数以百万计千兆字节的数据每天被数十亿用户交换,这个信息时代已经严重依赖云计算提供的处理请求和存储指数增长的数据所需的基础设施。

随着向创建云本地应用程序的转变,一种特别流行的技术是容器化的概念。

在传统的软件开发中,工程师在特定的计算环境中处理他们的代码库,包括特有的库文件、依赖项,以及操作系统的组合。虽然一个应用程序可以在一个开发人员的机器上工作,但这并不能保证它可以在另一个人的机器上工作,后者的配置可能略有不同。

容器

【1】
另一方面,容器化是将应用程序与操作系统、库、配置文件和它所需要的依赖打包成一个轻量级的软件包的过程。安装了所有这些组件后,容器就可以在与用户机器隔离的环境中运行了。这确保了应用程序的使用环境和开发环境完全相同,从而可以在任何平台上运行而不会出现问题。

如果使用容器的好处只能概括为一点,那必定是可移植性。

容器的可移植性大大加快了开发过程。它允许开发者一次性为应用编写代码,并让它在任何地方运行。因此,许多公司开始在容器上开发新的应用程序,而另一些公司则在改进当前的应用程序,以便在容器上运行,以及在云上使用。

但是为了实际构建和部署容器,开发人员需要一个容器运行时。目前,Docker被视为行业标准,因为它能够管理容器的生命周期,设置容器的资源限制,以及与容器之间的代理请求。

使用Dockerfile文本文档中提供的配置,Docker允许开发人员轻松地从项目目录构建镜像——本质上是创建容器的模板。这些镜像可以被推到容器镜像注册表(如Docker Hub)上,在那里人们可以拉出镜像来运行容器。
【2】
一旦将应用程序部署到容器中,理论上任何人、任何地方都可以使用它。但是如果你的容器因为某种原因挂掉了,你要按需再做一个吗?如果你突然发现你的应用程序被大量新用户撑爆,你是否需要部署新的容器并将用户引导到新的入口?

Kubernetes

这就是Kubernetes的切入点。Kubernetes是一个开源的容器编排系统,最初由谷歌开发。它自动化了部署、扩展和管理容器化应用程序和服务的过程。

那么,当容器失败或流量出现峰值时,Kubernetes如何提供帮助呢?

Kubernetes有许多特性,其中之一是自修复:当一个容器宕机时,Kubernetes将替换该容器。它还将关闭任何没有通过用户定义的健康检查的容器。

Kubernetes还具有自动rollout、回滚和负载平衡功能。通过这种方式,网络流量可以分布在许多容器中,并且可以根据需要启动和终止新的容器。

为了提供Kubernetes背后相对狭窄的架构概念范围,开发人员最可能需要使用的组件是集群、节点、命名空间和vcluster。

使用Kubernetes进行部署的第一步是在云计算平台上创建集群。在创建集群时,你可以选择希望在集群中运行多少个节点,以及希望每个节点具有多少计算能力。
【3】
创建集群后,命名空间是划分集群资源的一种方式。当有多个团队或项目需要共享集群及其资源时,命名空间可能很有帮助。默认情况下创建了四个命名空间(default、kube-node-lease、kube-public、kube-system),但团队也可以根据需要创建自己的命名空间。

此外,团队可以利用一个名为vcluster的开源工具来创建虚拟Kubernetes集群,该集群可以在原始集群的命名空间中运行。这些vcluster可以作为额外的开发环境,节省在各自的云平台上部署集群,但没有充分利用集群资源所耗费的成本。

命名空间与vcluster结合使用可以解决集群上的多租户问题。结合起来,它们可以使组织能够实现基于角色的访问控制,以限制团队或个人可以访问哪些环境和过程。

Ohana

虽然要理解的内容很多,但Ohana的工程团队开发了一个开源应用程序,该应用程序打算抽象所有这些技术之间的关系,以帮助简化部署集群、命名空间、vcluster和容器化代码库的过程。

我的同事Andy Kahn写了一篇精彩的文章,介绍了Ohana如何帮助团队将他们的应用程序迁移到云。

欢迎访问Ohana网站获取更多文档和信息!

原文链接:An Introduction to Containers, Docker, and Kubernetes(翻译:池剑锋)

0 个评论

要回复文章请先登录注册