向 Kubernetes 低头?Mesosphere 添加 Kubernetes 支持|航海日志 Vol.27

Posted 道客船长

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了向 Kubernetes 低头?Mesosphere 添加 Kubernetes 支持|航海日志 Vol.27相关的知识,希望对你有一定的参考价值。

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

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

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

4.使用 Docker 和 mysql 部署 Mayan EDMS




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


向 Kubernetes 低头?Mesosphere 添加 Kubernetes 支持|航海日志 Vol.27

毫无疑问,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 这样的容器上运行的工作流。


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


向 Kubernetes 低头?Mesosphere 添加 Kubernetes 支持|航海日志 Vol.27

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


视频地址:

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


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

向 Kubernetes 低头?Mesosphere 添加 Kubernetes 支持|航海日志 Vol.27

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


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


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


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


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


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

.git
.dockerignore

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


 使用 Docker 和 MySQL 部署 Mayan EDMS

向 Kubernetes 低头?Mesosphere 添加 Kubernetes 支持|航海日志 Vol.27

就实际情况来讲,Python 应用(比如说 Django 应用)存在打包、分发起来比较复杂的问题。因此我们在这里介绍一个使用 Docker 打包的解决方案。希望在您看完这篇博客之后能够明白为什么使用 Mayan 创建镜像是一个优秀的解决方案。Docker的包装理念是,每个容器应该只执行一个功能。这被称为“应用分离”,它使得对应用的特定部分的扩展变的相当容易。遵循这一理念,Mayan EDMS 镜像只包含实例运行所需要的最小条件。也就是说,改镜像包含:Mayan EDMS,网络服务器(nginx),用于为后台任务移动消息和存储结果的 broker,和一个流程管理器。

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

Step 1

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

docker network create mayan -d bridge

Step 2

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

# MySQL container MYSQL_ROOT_PASSWORD=mysql_root_password MYSQL_PASSWORD=mayan_password MYSQL_DATABASE=mayan_db MYSQL_USER=mayan_user # Mayan container MAYAN_DATABASE_DRIVER=django.db.backends.mysql MAYAN_DATABASE_NAME=mayan_db MAYAN_DATABASE_USER=mayan_user MAYAN_DATABASE_PASSWORD=mayan_password MAYAN_DATABASE_HOST=mayan-mysql MAYAN_DATABASE_PORT=3306

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


Step 3 

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

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镜像。

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

docker logs mayan-mysql

Step 4

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

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 版本。

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

docker logs mayan-edms

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

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

这一期的『航海日志』就到这里,下期再浪~


参考链接

  • https://techcrunch.com/2017/09/06/mesosphere-says-its-not-bowing-to-kubernetes/

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

  • https://nickjanetakis.com/blog/docker-tip-19-how-to-ignore-files-from-your-docker-images

  • https://www.mayan-edms.org/post/deploy-mayan-docker-mysql/


作者介绍

莫非 Beck:DaoCloud 微服务攻城狮,吃饱了就困的一流段子手。

刘玺元 Boring:DaoCloud 市场部门(伪)萌新程序猿。




Discussion | 你对今天的哪条新闻最感兴趣?

 
  • 你对今天的哪条新闻最感兴趣?你有什么独到的见解?

  • 本周你还有什么更具爆炸性的容器圈新闻吗?欢迎在留言区爆料!





 点这儿,查阅上一期的航海日志

以上是关于向 Kubernetes 低头?Mesosphere 添加 Kubernetes 支持|航海日志 Vol.27的主要内容,如果未能解决你的问题,请参考以下文章

欢迎参加9月杭州Meetup,了解Mesos CSI与Kubernetes最新动态

向大佬低头

苹果推出公众号真是向腾讯低头吗?

向Spring大佬低头——大量源码流出解析

向Spring大佬低头——大量源码流出解析

三星S22比iPhone13便宜,或代表安卓手机已向苹果低头