devops之 gitlab-ci + mesos + docker + marathon 持续发布②安装marathon

devops之 gitlab-ci + mesos + docker + marathon 持续发布②安装marathon

安装marathon的前提是安装部署好了mesos,在其中一个mesos节点安装即可

# wget http://downloads.mesosphere.com/marathon/v1.5.1/marathon-1.5.1.tgz
tar xf marathon-1.5.1.tgz -C /usr/local
mv marathon-1.5.0-96-gf84298d marathon-1.5.1
ln -s marathon-1.5.1 marathon

# 启动marathon

[root@ws-yt-server01-standby:/usr/local/marathon]# MESOS_NATIVE_JAVA_LIBRARY=/usr/local/lib/libmesos.so /usr/local/marathon/bin/marathon --master zk://192.168.254.161:2181,192.168.254.168:2181,192.168.254.185:2181/mesos --zk zk://192.168.254.161:2181,192.168.254.168:2181,192.168.254.185:2181/marathon

通过命令行创建应用

[root@ws-yt-server01-standby:~]# cat ch1.json 
{
    "id": "basic-0", 
    "cmd": "while [ true ] ; do echo 'Hello Marathon' ; sleep 5 ; done",
    "cpus": 0.1,
    "mem": 10.0,
    "instances": 1
}
[root@ws-yt-server01-standby:~]# curl -X POST http://192.168.254.161:8080/v2/apps -d @ch1.json -H "Content-type: application/json"

通过python测试app状态和创建容器,创建docker类型的app

# _*_ coding:utf-8 _*_
# __author__ == 'jack'
# __date__ == '2021-04-08 3:54 PM'
import requests
from flask import json


headers={'Content-type':'application/json'}


class MarathonApi():

    def test_ping(self):
        url = "http://192.168.254.161:8080/v2/info"
        r = requests.get(url, headers=headers)

        print(r.status_code)
        print(r.json())


    def test_create_docker_app(self):
        url = "http://192.168.254.161:8080/v2/apps"

        app={
            "id": "ch2",
            "cmd": "python3 -m http.server 8080",
            "cpus": 0.5,
            "mem": 32.0,
            "networks": [ {"mode": "container/bridge" }],
            "container": {
                "type":"DOCKER",
                "docker":{ "image": "python:3" },
                "portMappings": [{"containerPort": 8080, "hostPort": 0 }]
            }
        }

        r = requests.post(url, headers=headers,json=app)
        print(r.status_code)
        print(json.dumps(r.json(), indent=4))

    def test_create_docker_app_v1(self):
        url = "http://192.168.254.161:8080/v2/apps"

        app={
            "id": "ch4",
            "cmd": "python app.py",
            "cpus": 0.5,
            "mem": 32.0,
            "networks": [ {"mode": "container/bridge" }],
            # "uris": [
            #     "http://192.168.254.161/db-harbor-admin.tar.gz"
            # ],
            "container": {
                "type":"DOCKER",

                "docker":{ "image": "192.168.254.161/mesos/imooc_marathon:v1.0.1" },
                # "docker":{ "image": "192.168.254.161:5000/imooc_marathon:v1.0.6" },     # 不带验证的docker私有仓库
                "portMappings": [{"containerPort": 5080, "hostPort": 0 }]
            },
            "uris": [
                "http://192.168.254.161/db-harbor-admin.tar.gz"
            ]
        }

        r = requests.post(url, headers=headers,json=app)
        print(r.status_code)
        print(json.dumps(r.json(), indent=4))


if __name__ == '__main__':
    # MarathonApi().test_ping()
    # MarathonApi().test_create_docker_app()
    MarathonApi().test_create_docker_app_v1()

可以看到创建的资源

原文地址:https://www.cnblogs.com/reblue520/p/14667277.html