中国领先的IT技术网站
|
|
创建专栏

向 Kubernetes 低头?Mesosphere 添加 Kubernetes 支持

毫无疑问,Kubernetes 现如今是容器编排领域的领军者。Mesosphere,是最早采用容器技术的致力于让企业在云上运行其大数据和分析工作负载,于 9 月 6 日宣布,支持Kubernetes 在其 DC / OS 平台上运行云上的大数据应用程序

作者:莫非&刘玺元|2017-09-19 22:23

沙龙活动 | 去哪儿、陌陌、ThoughtWorks在自动化运维中的实践!10.28不见不散!


1. Mesosphere 向其数据中心操作系统添加 Kubernetes 支持

Mesosphere

毫无疑问,Kubernetes 现如今是容器编排领域的领军者。Mesosphere,是最早采用容器技术的致力于让企业在云上运行其大数据和分析工作负载,于 9 月 6 日宣布,支持Kubernetes 在其 DC / OS 平台上运行云上的大数据应用程序。由于 Mesosphere 长期以Marathon 的形式为 DC / OS 和 Apache Mesos 提供了自己的容器编排工具,这一公告将会让许多人感到非常惊讶。

Kubernetes 作为计划于 9 月 11 日推出的 DC/OS 1.10 版本的一部分,将在 beta 版中被提供。有分析指出,这意味着“Mesosphere 向 Kubernetes 低头”。但这一说法遭到了 Mesosphere 联合创始人兼首席执行官 Florian Leibert 和 首席营销官 Peter Guagenti 的强烈否认,他们强调,这样的做法为 Mesosphere 的大型企业客户提供了更多的选择。

Guagenti 表示:“我们的客户往往是大型公司的基础架构和实施运营的专业人员,他们为数以百计的开发人员提供服务。”“对他们来说,他们提供的最重要的东西是选择的自由。”

Leibert 认为, 提供对 Kubernetes 作为容器编排引擎的支持与提供对多个数据服务、连续集成平台和网络工具的支持没有什么不同。Guagenti 还强调, 重要的是要记住, 对于 Mesosphere 的客户来说, 平台不是关于容器的, 而是关于部署和管理数据密集型应用程序。

Leibert 还指出, Marathon 和 Kubernetes 有不同的使用用例, 因为 Marathon 也可以用来运行没有容器技术的遗留应用程序, 而 Kubernetes 显然只专注于容器。"因此, 我们很自然地支持这两者," Leibert 说。"如同这样的技术真的像一层层的蛋糕。Kubernetes 和 Mesos 可以很好地进行合作。Kubernetes 接管了容器的工作流, 但它不能处理通常不在像 Hadoop 这样的容器上运行的工作流。

2. 系列视频推荐: 面向 IT 专业人员,现代化你的 .Net 应用程序

 Docker 的现代化传统应用(MTA)程序

道客船长为大家推荐一个全新的共五部分的 Docker 的现代化传统应用(MTA)程序视频合集,主要针对 Microsoft IT 专业人员。该视频系列演示如何将. NET 3.5 应用程序从 Windows 服务器迁移到 Windows Docker 容器,并将其部署到云上的可伸缩、高度可用的环境中,而无需对应用程序进行任何更改。

视频地址:

https://www.youtube.com/playlist?list=PLkA60AVN3hh88hW4dJXMFIGmTQ4iDBVBp

3. Docker 小贴士:如何忽略你的 Docker 镜像中的文件

Docker

以下是从 Docker 镜像中忽略某些文件和文件夹的方法。这可以让你只复制你想要的所有内容,而不受其他东西的影响。

在大多数情况下,将应用程序的源代码复制到 Docker 镜像中,通常会通过添加COPY src/ dest/或类似于你的 Dockerfile。

这是一个很好的方法,但这也将包括属于你项目的.git/目录或/tmp文件夹。这将严重影响 Docker 镜像。

对我们来说非常幸运的是,Docker 可以很简单的排除你选择的文件和文件夹。你需要做的是在 Dockerfile 创建一个.dockerignore文件。

在这一点上,它非常类似于.gitignore文件对你git repos的影响。你只需要告诉你想忽略什么。

例如,要忽略 git 目录和.dockerignore文件本身,便可以创建一个 名为.dockerignore的 文件,然后添加以下行:

  1. .git 
  2. .dockerignore 

删除特定的编程语言,框架或代码编辑器的临时文件也是一个不错的主意。

4. 使用 Docker 和 MySQL 部署 Mayan EDMS

使用 Docker 和 MySQL 部署 Mayan EDMS

就实际情况来讲,Python 应用(比如说 Django 应用)存在打包、分发起来比较复杂的问题。因此我们在这里介绍一个使用 Docker 打包的解决方案。希望在您看完这篇博客之后能够明白为什么使用 Mayan 创建镜像是一个优秀的解决方案。

Docker的包装理念是,每个容器应该只执行一个功能。这被称为“应用分离”,它使得对应用的特定部分的扩展变的相当容易。遵循这一理念,Mayan EDMS 镜像只包含实例运行所需要的最小条件。也就是说,改镜像包含:Mayan EDMS,网络服务器(NGINX),用于为后台任务移动消息和存储结果的 broker,和一个流程管理器。

要使用 MySQL 安装 Mayan EDMS Docker,我们将使用两个容器:一个用于 MySQL,一个用于 Mayan。通常,程序通过配置或“ini”文件进行配置,但是 dockerized 程序的理念是通过环境变量配置容器。以下是要遵循的步骤。

Step 1

Docker 容器是相互隔离的,这意味着任务执行、文件访问和网络访问的相互隔离。为了让我们的两个 Docker 容器能够相互通信,我们需要为他们创建一个网络。为此,我们使用命令:

  1. docker network create mayan -d bridge 

这创建了一个bridge网络,一种简单的网络类型,用于连接主机而无需路由。我们把这个网络叫做mayan。我们使用这个网络部署我们的容器,以便它们互相访问,就像它们是局域网(LAN)中唯一的两台计算机一样。 Docker 最近添加了对动态域名的支持,这意味着我们可以通过名称引用容器,而不仅仅是 IP 地址。

Step 2

如上所述,我们将使用环境变量来配置容器。由于我们将传递几个变量,启动容器的命令行将会有点长,容易出现数据输入错误。对于这些情况,Docker 允许我们在文件中定义这些环境变量,并在启动容器时传递文件名。我们现在来创建名为envfile的环境配置文件:

  1. # MySQL container 
  2. MYSQL_ROOT_PASSWORD=mysql_root_password 
  3. MYSQL_PASSWORD=mayan_password 
  4. MYSQL_DATABASE=mayan_db 
  5. MYSQL_USER=mayan_user 
  6.  
  7. # Mayan container 
  8. MAYAN_DATABASE_DRIVER=django.db.backends.mysql 
  9. MAYAN_DATABASE_NAME=mayan_db 
  10. MAYAN_DATABASE_USER=mayan_user 
  11. MAYAN_DATABASE_PASSWORD=mayan_password 
  12. MAYAN_DATABASE_HOST=mayan-mysql 
  13. MAYAN_DATABASE_PORT=3306 

第一组变量配置 MySQL 容器以在启动时创建数据库,创建一个用户并授予其对该数据库的所有权限。第二组变量配置 Mayan 容器以使用指定的凭据来访问数据库容器,从 Mayan 的角度来看,它是网络中的另一个主机,在这种情况下,这个主机将被称为 mayan-mysql。这只是告诉 Mayan 在访问数据库时使用哪个 Django 数据库驱动程序。

Step 3

现在我们继续使用命令行创建和启动第一个容器,MySQL 容器:

  1. docker run -d --name mayan-mysql --restart=always --env-file envfile -v mayan_mysql:/var/lib/mysql --net=mayan mysql:latest 

该命令使 Docker 创建并运行一个名为mayan-mysql的容器,每次停止(挂起或主机重新启动)时都会重新启动,使用文件envfile进行配置,它将从目录/var/lib/mysql转换成持久化的 Docker 存储(称为卷),名为mayan_mysql。它使用mayan网络,并使用最新的官方MySQL Docker镜像。

您可以使用命令初始化容器的日志文件:

  1. docker logs mayan-mysql 

Step 4

最后我们使用以下命令启动Mayan容器:

  1. docker run -d --name mayan-edms --restart=always --env-file envfile -v mayan_data:/var/lib/mayan --net=mayan -p 80:80 mayanedms/mayanedms:2.6.4-3 

该命令使Docker创建并运行一个名为mayan-edms的容器,每次停止时都会重新启动。它将使用文件envfile进行配置,把数据从目录/var/lib/mayan持久化到称为mayan_data的卷(volumn)中。它会将其内部端口 80(HTTP)作为 80 端口暴露给外界,使用mayan网络,并使用官方Mayan EDMS Docker镜像的 2.6.4-3 版本。

使用以下方式检查容器的日志:

  1. docker logs mayan-edms 

您应该看到创建数据库的容器,并执行所有需要的初始化。几分钟后,您将可以浏览到运行容器的机器上 80 端口的 localhost(或127.0.0.1),并正常使用 Mayan。由于容器是使用--restart = always选项启动的,因此下次启动主机时不需要执行任何操作。

将以上打包步骤与 Mayan EDMS(或任何 Django 项目)的“裸机”生产部署所需的步骤数量进行比较,你就明白为什么 Docker 是一个优秀的解决方案了吧。

【本文是51CTO专栏机构“道客船长”的原创文章,转载请通过微信公众号(daocloudpublic)联系原作者】

戳这里,看该作者更多好文

【编辑推荐】

  1. 使用Docker网络解决方案weave遇到的那些坑
  2. 外媒速递:Docker的出现是否意味着传统应用程序发布管理机制即将走向终点
  3. 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解
  4. 外媒速递:关于Docker迁移的五种常见误区
  5. 大神的Docker初体验:入门实践篇
【责任编辑:赵宁宁 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

热门职位+更多

× Python最火的编程语言