zoukankan      html  css  js  c++  java
  • 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()

    可以看到创建的资源

  • 相关阅读:
    Android应用程序窗口(Activity)实现框架简要介绍和学习计划
    Android系统Surface机制的SurfaceFlinger服务简要介绍和学习计划
    《Android系统源代码情景分析》一书勘误
    Android应用程序窗口(Activity)的运行上下文环境(Context)的创建过程分析
    非IE内核浏览器支持activex插件
    让火狐浏览器可以访问含有activex控件网页的三种方式
    C++中delete和delete[]的区别
    动态加载JS脚本
    创建一个弹出DIV窗口
    C# 向下遍历删除子目录和子文件 及 向上遍历空的父目录
  • 原文地址:https://www.cnblogs.com/reblue520/p/14667277.html
Copyright © 2011-2022 走看看