云原生计算依赖于临时容器而不是固定的服务器。在临时容器中执行应用程序可以解决资源稀缺的挑战,但也创建了一个动态环境,需要新的实践和工具。为了解决这些问题,Google 的 Ian Lewis 将在本月于日本东京举行的 OpenStack 峰会上发表题为“在临时容器的世界中,我们如何追踪事物?”的演讲。
我们采访了 Ian,了解 DevOp 团队如何在实践中应用临时容器、采用新的架构模式以及将应用程序迁移到容器中。Ian 提供了关于在哪里存储数据、为什么服务发现是必要的,以及 OpenStack 内和外部(在 Kubernetes 中)哪些新的开源项目可以帮助团队转向临时容器的好技巧。
为什么容器应该是临时的?我们试图用临时容器解决什么问题?
运行容器的主要好处之一是它们可以很容易地在集群中运行和管理,而无需考虑它们实际运行的机器。这允许您移动正在运行的应用程序,例如在需要维护时,对您的用户透明地移动到不同的硬件。移动容器的灵活性意味着您不能将状态本地存储在特定的机器上,因为该进程可能随时被移动。您需要能够以无论应用程序在哪里运行都可以访问的方式存储状态。
临时容器在实践中意味着什么?
一般来说,这意味着你的应用程序不应该将数据写入本地存储。这包括从应用程序数据到日志数据的所有内容。你的应用程序应该能够重启并使用全新的容器镜像。数据需要使用专门用于存储的服务存储在容器外部。
可丢弃的和临时的容器听起来很酷,可以根据需要启动、移动和退役,但是存储在容器内的内容和容器公开的端点呢?例如,会话状态、API 端点和数据库连接端点。会话状态和数据库连接也会消失吗?
容器本身并不是管理状态、API 端点和连接的灵丹妙药。您仍然需要以使其高度可用的方式编排容器和网络。这是 Google 创建 Kubernetes 以帮助解决其中一些问题的原因之一。
传统的部署通常依赖于永久性的服务器。团队应该如何重构服务器和应用程序以处理移动的容器?
我认为需要进行两个大的更改。首先是将状态存储在主机和容器之外。这是我演讲的主题。其次是应用程序应该具有服务发现的方法。容器的移动意味着客户端将需要一种连接到服务的方式,无论它们实际在哪里运行。
您推荐任何好的架构模式吗?
我建议在使用容器时采用面向服务的架构。当您运行的服务很小并且可以彼此独立地扩展和缩减时,容器的好处更容易感受到。
我如何开始构建临时容器环境而不是永久容器环境?团队应该使用哪些基础设施和开发框架来安全地部署、移动和处理容器?
尝试集群管理器,例如 Kubernetes (或 Container Engine) 是构建此类环境的一个好的开始。Kubernetes 是一个容器编排器,它在服务器集群中调度容器,在运行时它们最适合,每次可能不是同一台服务器。使用 Kubernetes 将帮助您了解该领域最佳实践。
容器如何在 OpenStack 中实现?
Docker Swarm 和 Kubernetes 等容器编排引擎将通过名为 Magnum 的 API 服务作为 OpenStack 中的一流资源提供。 Magnum 将创建服务器集群作为安装了集群编排器的虚拟机。然后你可以使用 Magnum 轻松地在其中创建容器。
在最新的 OpenStack 版本和路线图中,容器编排、调度和组合方面取得了哪些进展?
在这个领域有很多开发正在进行,而且很多功能都非常新。 Magnum 将包含在 OpenStack Liberty 中,该版本已于本月发布。其他工具,例如允许您在容器中部署 OpenStack 的 Kolla 和提供从应用程序目录轻松部署应用程序的 Murano,也值得一试。
演讲者访谈
本文是 演讲者访谈系列 的一部分,面向 OpenStack Summit Tokyo,这是一个为 OpenStack 云软件的开发人员、用户和管理员举办的为期四天的会议.
评论已关闭。