短生命周期容器在生产环境中的应用实践

本文是东京OpenStack Summit大会系列采访的一部分,被采访者是Ian Lewis,谷歌云平台工程师,主要阐述了短生命周期容器的概念,作用和如何将它应用到生产环境当中。

原生云计算(Cloud-native computing)依赖于短生命周期的容器而不是固定的服务器。在短生命周期的容器中运行应用,解决了资源困乏的挑战,但同时也引入了需要新的实践和工具去匹配这个动态环境的问题。谷歌的Ian Lewis将在这个月东京举办的OpenStack Summit上分享如何在短生命周期的容器中记录并追踪它们。

我们联系了Ian,学习了DevOp团队是如何将短生命周期容器应用到实践中,如何采用新的架构模型并且将应用迁移到容器中,Ian提供了一些很好的点子,包括如何存储数据、为什么服务发现是必要的、OpenStack开发了什么新的开源项目和如何帮助团队实现将应用转移到短生命周期的容器中。

Q: 为什么容器应该是短生命周期的,短生命周期的容器可以解决什么问题?

使用容器一个最主要的好处是在集群中它们可以很容易的运行和管理,而不用考虑它们在什么样的实体机上运行。这就允许你在运维需要时,透明的将一个正在运行的应用迁移到不同的硬件上。这种迁移容器的灵活性意味着你不能在本地一台特定的机器上存储状态,因为移动的过程可能会在任何时候发生。你需要做到无论应用在什么地方运行都可以访问到存储状态信息。

Q: 实践中什么是短生命周期?

通常来说,短生命周期的意思是你的应用不能在本地存储数据,数据包括从应用数据到日志数据。你的应用应该可以重启并工作在一个新的容器镜像中。数据需要被存储在容器外部,意味着存储需要使用专门的服务。

Q: 可任意支配和短生命周期的容器听起来很酷,只需要运行、迁移和撤销操作,但如果内容已经存储在容器中并且一些端点(Endpoint)已经被容器暴露,怎么办呢,例如:会话状态、API路径和数据库连接端点。那会话状态和数据库连接也消失了?

容器本身并不是管理状态、API路径和连接的银弹。你仍然需要容器的编排管理系统和网络来使它满足高可用性。这也是为什么谷歌发明Kubernetes来解决这些问题的原因。

Q: 传统的部署方式依赖于持久化服务器,那应该如何重构服务器和应用来实现迁移型的容器呢?

我认为有两个比较大的变化。第一是在主机外和容器外存储状态。第二是应用应该有方法完成服务发现。容器迁移意味着需要一种方式,实现无论服务端实际在哪里运行,客户端都能连接到它。

Q: 你有什么好的架构模型推荐吗?

使用容器时,我会推荐面向服务的架构。好处在于当这个服务运行得足够小,并且能够互相独立地扩展或收缩时,容器会非常容易被感知到。

Q: 我该如何创建一个短生命周期的容器环境而不是持久化的容器环境呢,什么基础设施和开发框架可以使用来安全的部署、迁移和处理容器?

可以尝试使用集群管理工具如Kubernetes(或者Container Engine)。Kubernetes是一个容器编排管理工具,它在集群的服务端调度容器,让容器知道它们适合的运行时间,这些时间可能不会和服务端在同一个时间点。使用Kubernetes也许是不错的选择。

Q: 容器如何在OpenStack中执行?

容器编排管理引擎如Docker Swarm和Kubernetes将会在OpenStack中成为一等重要的资源,通过一个叫Magnum的API服务来实现。Magnum会创建服务端集群如同虚拟机安装了一个集群管理工具,使用Magnum来操控容器就容易很多。

Q: 在OpenStack最新的发布版本和路径中,有没有关于容器管理编排和调度的?

关于这块还有很多开发仍在进行中,还有很多新的特性。Magnum会被包括在OpenStack Liberty中,在这个月发布。其他工具如Kolla,它用于在容器中部署OpenStack,还有通过Application Catalog服务使应用开发更容易的Murano,同样值得期待。

本文作者:何炜

来源:51CTO

时间: 2024-10-15 02:37:02

短生命周期容器在生产环境中的应用实践的相关文章

使用短生命周期容器(Ephemeral Containers)构建微服务化的工作流

本文讲的是使用短生命周期容器(Ephemeral Containers)构建微服务化的工作流,[编者的话]本文作者Ross Jimenez来自CenturyLink Labs,他受到了Iron.io一篇介绍容器微服务的相关文章的启发,于是介绍了自己团队在构建Panamax的时候所用到的微服务的理念,此外作者还大致介绍了微服务和容器技术相结合之后的优势,以及他们怎样通过微服务化的容器来构建工作流模型. 通过Docker容器可以构建具有特定功能的工作流,也可以让容器在后台执行一系列的异步任务,我们所

IT生产环境中容器编排系统的五个最佳做法

本文讲的是IT生产环境中容器编排系统的五个最佳做法[编者的话]本文主要讲述了生产环境中使用容器编排系统需要注意的5个最佳做法. [深入浅出学习 etcd]etcd为分布式系统提供可靠.高效的配置管理服务,在Docker.Kubernetes.Mesos等平台中扮演了越来越重要的角色.作为2013年开始的项目,它还很年轻,官方文档中缺乏实现上全面.系统的介绍,本课程深入浅出地介绍了etcd的实现,并为运维和二次开发提供了系统的指导和建议. 如果您的企业IT运维组织结构已转移到Docker等容器技术

生产环境中的容器之工作流

本文讲的是生产环境中的容器之工作流,[编者的话]很多公司已经在生产环境里大规模使用容器.前一篇文章里介绍了Spotify,DramaFever,Built.io和IIIEPE如何以及为什么使用容器.本文继续深入讨论这几个公司的工作流. 构建应用程序以及管理pull请求 在生产环境使用容器的一大吸引人之处是创建无缝的开发到生产环境的能力,最先代码在开发人员的笔记本上,然后能够整体移动到测试环境,并且随后直接部署,而不会因为底层基础架构环境的改动而导致问题. IIIEPE怎么做 Luis Elizo

80/20定律:在生产环境中使用容器所能带来的收益

本文讲的是80/20定律:在生产环境中使用容器所能带来的收益[译者的话]二八定律又名80/20定律.帕累托法则(定律),它指出了在大部分情况下:多数努力,它们只能造成少许的影响:而少数的部分,它们造成主要的.重大的影响. 将容器应用到你的日常工作当中,花费20%的精力或许就能带来你所期望的80%的收益,避免将时间和精力花费在琐事上,要学会抓重点. 今天许许多多的人都在谈论容器,容器编排,以及容器相关的生态,而相比之下却只有少数几个组织能够真正的在生产中使用容器. 鉴于使用容器所能带来的那些好处,

在生产环境中使用Apache Mesos和Docker

本文讲的是在生产环境中使用Apache Mesos和Docker,[编者的话]本文翻译自 IVO VERBERK博客,Docker容器软件已受到了从科技巨头到企业的广泛注意.但是,随着容器概念转变成为现实世界中的成熟技术,那么问题就变成了:怎么样才能快速把Docker应用于生产环境中呢? 介绍 在生产环境中安全有效地的运行Docker容器会有很多复杂的挑战.许多复杂性挑战都是在跨多主机间运行容器产生的.这些跨主机的容器可能需要保持或共享状态,也可能需要相互通信,还可能会随时消失.为了高容错性和可

生产环境中Docker的持久化存储模式

本文讲的是生产环境中Docker的持久化存储模式[编者的话]在生产环境中使用Docker实现持久化存储一直是业界的热点问题,本文从到配置文件.机密材料.数据库.共享数据等方面做了些探讨,文中也谈到了一些需要避免的问题以及尽量将应用设计为无状态服务的原则. 一般看法认为容器对于无状态的应用程序是很好的,但是不适合有持久化数据的有状态应用.如果这是真的,这并不是因为技术不到位,而是因为管理持久化数据和有状态应用程序的模式并不总是为人们所熟知.你面临的挑战很多不是关于持久化状态的,而是如此操作不会影响

生产环境中使用Docker Swarm的一些建议

本文讲的是生产环境中使用Docker Swarm的一些建议[编者的话]实践中会发现,生产环境中使用单个Docker节点是远远不够的,搭建Docker集群势在必行.然而,面对Kubernetes,Mesos以及Swarm等众多容器集群系统,我们该如何选择呢?它们之中,Swarm是Docker原生的,同时也是最简单,最易学,最节省资源的,至少值得我们多了解一下.本文将介绍一些非常实用的建议. [深圳站|3天烧脑式Kubernetes训练营]培训内容包括:Kubernetes概述.架构.日志和监控,部

在生产环境中使用Docker必须注意的事情

本文讲的是在生产环境中使用Docker必须注意的事情,[编者的话]本文以最近非常火的希特勒怒喷Docker的视频为线索,详细分析了Docker存在的一些问题和弱点,以及在生产环境中使用Docker所要注意的方面.这些问题包括隔离性.镜像安全.Docker缺省配置.发布及部署:文章的最后分析了微软最近在容器支持方面的动作. 我们不能否认Linux容器是一个非常强大的概念,它组合了众多优秀的Linux内核功能和Docker开源工具,任何背景知识的开发者都很容易使用. 在2016年容器峰会上,Brya

详解将ASP.NET Core应用程序部署至生产环境中(CentOS7)_实用技巧

将ASP.NET Core应用程序部署至生产环境中(CentOS7) 阅读目录 环境说明 准备你的ASP.NET Core应用程序 安装CentOS7 安装.NET Core SDK for CentOS7. 部署ASP.NET Core应用程序 配置Nginx 配置守护服务(Supervisor) 这段时间在使用Rabbit RPC重构公司的一套系统(微信相关),而最近相关检验(逻辑测试.压力测试)已经完成,接近部署至线上生产环境从而捣鼓了ASP.NET Core应用程序在CentOS上的部署