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()
可以看到创建的资源