容器化部署Mesos/Marathon

一.Mesos/marathon

Mesos容器编排工具,有master和slave节点。

二级调度。

marathon框架。

二.使用容器搭建mesos/marathon

将Spring boot项目docker化之后,准备使用Mesos来编排管理。

可惜革命尚未成功,先行记录如何部署的环境。

marathon部署spring boot应用(docker镜像)总是重新部署,报错信息如下,待解决。已测试镜像使用docker可以启动)

I0821 09:09:59.345898   285 exec.cpp:162] Version: 1.6.2

I0821 09:09:59.354513   293 exec.cpp:236] Executor registered on agent 661c1f88-71ce-4c84-a5cc-e615bc02cf0d-S0

I0821 09:09:59.355615   291 executor.cpp:123] Registered docker executor on 192.168.0.241

I0821 09:09:59.356647   289 executor.cpp:179] Starting task messages-service.instance-7009f2a3-c3f3-11e9-99fa-02427fb14d49._app.1

W0821 09:11:00.587472   288 executor.cpp:650] The container process (pid: 16779) has exited, but Docker daemon failed to catch it.

I0821 09:11:00.588026   288 executor.cpp:729] Failed to get exit status of container

W0821 09:11:00.588026   285 logging.cpp:95] RAW: Received signal SIGTERM from process 1 of user 0; exiting

下面是部署Mesos和marathon的流程。

1.环境配置及安装的相应组件:

1台 ubuntu16.04 (8GB+40GB)主机 ,IP192.168.0.241,  安装Zookeeper+mesos(master+slave)+harbor组件

提示:安装harbor详见https://blog.csdn.net/weixin_42146764/article/details/99760586,可以不用安装harbor,但我需要用私库;docker安装zookeeper,使用下面命令:

docker run --name zookeeper -p 2181:2181 --restart always -d zookeeper

1台 CentosOS7(8GB+40GB)主机 ,IP192.168.0.245,安装marathon

1台 Windows(12GB+250GB)主机 ,IP192.168.0.240,使用docker toolbox 安装了docker,IP192.168.99.100,默认账户docker(密码tcuser),安装marathon-lb组件

三台主机处于局域网内。

2.下载镜像,编写各个组件启动脚本和启动验证:

到docker hub,搜索mesos-master,mesos-slave,marathon,marathon-lb获取各个组件的版本信息和启动方式,在相应的主机上拉取相应的组件。

下载镜像命令分别为:

docker pull mesosphere/mesos-master:1.6.2

docker pull mesosphere/mesos-slave:1.6.2

docker pull mesosphere/marathon: v1.9.34

docker pull mesosphere/marathon-lb: v1.14.0

按上述顺序编写组件启动脚本、启动和验证:

(1)Mesos-master(IP:192.168.0.241)

mkdir mesos

cd mesos

vi start-mesos-master.sh

内容:

#!/bin/bash

docker run -d --net=host \

  --hostname 192.168.0.241 \

  -e MESOS_PORT=5050 \

  -e MESOS_ZK=zk://192.168.0.241:2181/mesos \

  -e MESOS_QUORUM=1 \

  -e MESOS_REGISTRY=in_memory \

  -e MESOS_LOG_DIR=/var/log/mesos \

  -e MESOS_WORK_DIR=/var/tmp/mesos \

  -e MESOS_EXECUTOR_REGISTRATION_TIMEOUT=10mins \

  -v "$(pwd)/log/mesos:/var/log/mesos" \

  -v "$(pwd)/work/mesos:/var/tmp/mesos" \

  192.168.0.241:80/micro-service/mesosphere/mesos-master:1.6.2 \

  --no-hostname_lookup --ip=192.168.0.241

启动:

执行
sh start-mesos-master.sh

验证:

打开浏览器输入http://192.168.0.241:5050,出现UI界面,表明成功

(2)Mesos-slave(IP:192.168.0.241)

vi start-mesos-slave.sh

内容:

docker run -d --net=host --privileged \

   --hostname 192.168.0.241 \

   -e MESOS_PORT=5051 \

   -e MESOS_MASTER=zk://192.168.0.241:2181/mesos \

   -e MESOS_SWITCH_USER=0 \

   -e MESOS_CONTAINERIZERS=docker,mesos \

   -e MESOS_LOG_DIR=/var/log/mesos \

   -e MESOS_WORK_DIR=/var/tmp/mesos \

   -v "$(pwd)/log/mesos:/var/log/mesos" \

   -v "$(pwd)/work/mesos:/var/tmp/mesos" \

   -v /sys:/sys \

   -v /var/run/docker.sock:/var/run/docker.sock \

   -v /usr/bin/docker:/usr/local/bin/docker \

   192.168.0.241:80/micro-service/mesosphere/mesos-slave:1.6.2 --no-systemd_enable_support \

   --no-hostname_lookup --ip=192.168.0.241

启动:

执行
sh start-mesos-slave.sh

验证:

打开浏览器输入http://192.168.0.241:5050,点击Agents

(3)Marathon (IP:192.168.0.245)

mkdir marathon

cd marathon

vi start-marathon.sh

内容:

#!/bin/bash

docker run -d --net=host \

 192.168.0.241:80/micro-service/mesosphere/marathon:v1.9.34 \

 --master zk://192.168.0.241:2181/mesos \

 --zk zk://192.168.0.241:2181/marathon \

 --task_launch_timeout=600000

启动:

执行
sh start-marathon.sh

验证:

打开浏览器输入http://192.168.0.245:8080

创建Mesos应用测试是否可以运行:

点击CreateApplication,输入以下内容,再直接点击create Application.成功会出现一个名为test的应用处于running状态,可以点击这个应用进去找到stdout查看结果

(4)Marathon-lb:(IP:192.16899.100)

mkdir marathon

cd marathon

vi start-marathon-lb.sh

内容:

#!/bin/bash

docker run -d --net=host \

 -e PORTS=9090 \

 192.168.0.241:80/micro-service/mesosphere/marathon-lb:v1.14.0 sse --group external --marathon http://192.168.0.245:8080

启动:

执行
sh start-marathon-lb.sh

验证:

打开浏览器输入http://192.168.99.100:9090/haproxy?stats

注意:在marathon创建应用时需要设置label:HAPROXY_GROUP external

external是启动时使用--group设置的 

3.遇到的问题:

启动mesos-slave:报错

(1)EXIT with status 1: Failed to initialize systemd: Failed to locate systemd runtime directory: /run/systemd/system

执行命令查看需要添加的参数:docker run -it 192.168.0.241:80/micro-service/mesosphere/mesos-slave:1.6.2 --help |grep system

容器启动时添加参数:--no-systemd_enable_support

(2)main.cpp:503] EXIT with status 1: Failed to create a containerizer: Could not create DockerContainerizer: Failed to create docker: Failed to get docker version: Failed to execute 'docker -H unix:///var/run/docker.sock --version': exited with status 2

在docker上可以查看version:

[root@k8s-worker1 mesos]# docker -H unix:///var/run/docker.sock --version

Docker version 1.13.1, build b2f74b2/1.13.1

分析主要原因是:mesos-slave镜像是ubuntu构建的,只可以运行在ubuntu(感觉是强行解释,暂时出现的情况就是同样的命令在ubuntu上执行成功,在centos上报错),而我采用的是centos,当然centos也有mesos-slave镜像

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值