2017-10-18 81 views
0

我有一個正在運行的Mesos/Marathon集羣,但正在運行的實例的IP不會傳播到Marathon-UI或traefik代理。運行實例的IP不會傳播

我mesos設置:

ExecStart=/bin/bash -c "/usr/sbin/mesos-slave \ 
      --hostname=$(/usr/bin/hostname) \ 
      --work_dir=/var/lib/mesos \ 
      --master=zk://xxx.net:2181,yyy:2181,zzz:2181/mesos \ 
      --log_dir=/var/log/mesos \ 
      --executor_registration_timeout=10mins \ 
      --containerizers=docker,mesos \ 
      --docker=$(which docker) \ 
      --ip=$(ifconfig eth0 | grep -oP 'inet \K\S+')" 

我treafik的conf:

logLevel = "INFO" 
[web] 
address = ":8088" 
[marathon] 
endpoint = "http://xxx:8080" 
watch = true 
domain = "xxx" 
exposedByDefault = true 
groupsAsSubDomains = true 
forceTaskHostname = true 

[accessLog] 

enter image description here enter image description here

UPDATE: 應用程序定義是:

{ 
    "id": "/web", 
    "cmd": null, 
    "cpus": 1, 
    "mem": 64, 
    "disk": 0, 
    "instances": 1, 
    "acceptedResourceRoles": [ 
    "*" 
    ], 
    "container": { 
    "type": "DOCKER", 
    "volumes": [], 
    "docker": { 
     "image": "ldaume/caddy", 
     "network": "BRIDGE", 
     "portMappings": [ 
     { 
      "containerPort": 2015, 
      "hostPort": 0, 
      "servicePort": 10001, 
      "protocol": "tcp", 
      "labels": {} 
     } 
     ], 
     "privileged": false, 
     "parameters": [], 
     "forcePullImage": false 
    } 
    }, 
    "portDefinitions": [ 
    { 
     "port": 10001, 
     "protocol": "tcp", 
     "labels": {} 
    } 
    ] 
} 

如果我將Marathon DNS與給定端口一起使用,則可以訪問該應用程序。

+0

您能否指定您正在使用的Marathon版本,並添加已清理的應用程序定義?馬拉松隊的Ivan說:「如果是Marathon 1.5.x,那麼答案可能很簡單,因爲Marathon已經過時了,並且有一些突破了1.5的網絡相關變化,或許這同樣適用於traefik」。儘管考慮下面的答案,但對於traefik來說可能並不相同。 –

+0

因@JudithMalnick。我在使用Marathon 1.4.8(在嘗試1.5.1之前)使用Mesos 1.4在Debian伸展(9)和traefik 1.4 – Lenny

+0

甜,謝謝!你可以添加你的應用程序或pod定義嗎? –

回答

0

我和你有相同的設置,我有我的報告正確。我正在使用1.4 traefik。 Traefik配置很簡單:

################################################################ 
# Global configuration 
################################################################ 

defaultEntryPoints = ["http"] 


################################################################ 
# Web configuration backend 
################################################################ 

[web] 
    address = ":8081" 

################################################################ 
# Marathon configuration backend 
################################################################ 


[marathon] 
    endpoint = "http://172.31.xx.xx:8080" 

    domain = "marathon.localhost" 

    watch = true 

...... 正在使用Docker容器的AWS設置,其中端點是內部IP VPC,而不是外部的AWS IP。