Kubernetes是一个跨多个计算节点的管理容器化应用的系统,它提供了一系列基本的功能,如应用的自动化部署,维护和扩展等。Mesos是Apache下的开源分布式资源管理框架,它被称为是分布式系统的内核。把Kubernetes运行在Mesos集群之上,可以和其他的框架共享集群资源,提高集群资源的利用率。本文是“Kubernetes和Mesos集成指南”系列文章第一篇:实战部署。
现在Kubernetes官方提供的部署基于Mesos的Kubernetes集群的文档相对简单,对于不熟悉Mesos的Kubernetes开发者或者用户来说,按照那个文档提供的说明进行部署,可能会比较困难,并且会遇到一些坑。文本是基于作者长期贡献Mesos和Kubernetes社区的开发经验, 分享给大家实战部署基于Mesos的Kubernetes集群。同时部署Kubernetes附加的一些服务,比如DNS和Dashboard等。
搭建基于Mesos的Kubernetes集群
部署架构
本文笔者将利用三台虚拟机来演示如何部署基于Mesos的Kubernetes集群,各个节点上的集群服务组件如下图所示: 另外为了让大家可以尽快体验kubernetes和Mesos最新的特性,以及同时对kubernetes用户和开发者同时具有借鉴意义,我选择最新的社区代码来编译安装基于Mesos的kubernetes集群,如果读者想使用一个稳定的release版本,你可以下载对应的tar包,然后按照相同的步骤进行。 另外因为集群会有多个节点,开发者可能会修改部分源代码,为了在修改了源码之后,使修改可以快速便捷的在所有的机器上生效,我们将在wyq01.ibm.com这个机器上架设NFS服务,把它作为编译的机器,用来编译Mesos和kubernetes源代码。然后将编译的安装包目录 mount到其他的计算节点上。这样在修改了Mesos或者kubernetes的代码之后,只需要在wyq01.ibm.com进行编译然后只需要在另外两台计算节点上重启相应的服务就可以生效。安装步骤
1.准备环境 准备三台Ubuntu 14.40的环境(物理机和虚拟机都可以),配置DNS或者/etc/hosts文件来保证相互通过机器名可以访问,并且关闭防火墙。 2.在每一个节点上安装Docker 最新版本的kubernetes支持多种容器的运行时,比如Docker,Rocket,CNI等,本文以最主流的Docker最为例子来演示。分别登陆这三台机器,执行以下命令安装Docker: [crayon-57981de5ed302906348006/] Client: [crayon-57981de5ed310329526394/] Server: [crayon-57981de5ed316220360583/] 在本演示环境中,笔者安装的是当时最新的docker版本,建议使用最新版本,如果你的机器上已经安装Docker,请检查kubernetes官方文档,查看你安装的Docker是不是符合要求。 另外由于你所在环境的限制,可能需要对Docker配置网络代理才可以在docker hub或者其他仓库中下载镜像: 编辑/etc/default/docker文件,在此文件中添加http_proxy的配置, 如下所示: [crayon-57981de5ed31c756063038/] 3.在master节点上编译 Mesos源代码 Mesos官方目前没有提供Mesos的安装包,需要自己下载源码包进行build。本文以Mesos最新的代码为例进行编译安装, 登陆master节点wyq01.ibm.com执行以下步骤进行编译: 首先需要安装运行 Mesos 必须的第三方软件包: [crayon-57981de5ed321513653895/] 下载源码包进行编译安装: [crayon-57981de5ed327053814055/] 编译安装完成之后,就可以在如下目录看到编译之后的二进制包和相关的管理脚本: [crayon-57981de5ed32c015401957/] 我们将用mesos-daemon.sh脚本来启动Mesos服务,之前需要对配置: 编辑/opt/mesosinstall/usr/local/sbin/mesos-daemon.sh文件:- 修改prefix变量的值为:/opt/mesosinstall/usr/local
- 在prefix的下一行添加行:
- 设置环境变量:
- 启动etcd服务:
- 安装flannel:
- 配置Docker:
- 启动kubernetes服务:
- 设置环境变量:
- 安装flannel:
- 配置Docker: