2016-09-21 3 views
1

DCOS 1.8 클러스터를 설치했으며 현재 익숙해지고 있습니다. 지금까지 Jenkins와 호스트 네트워킹을 통해 매력을 발휘하는 marathon-lb를 사용했습니다. 이제 오버레이를 사용하여 설정하려고합니다. 몇 가지 테스트 컨테이너가 있습니다. 일부는 dcos 오버레이 네트워크에 있지만 일부는 그렇지 않습니다. 지금까지 그들은 IP를 통해 서로 연결할 수 있습니다. 그러나 mesos-dns를 사용하여 오버레이 네트워크에서 컨테이너를 분석하려고하면 호스트 주소가 정확하게 해석됩니다.DCOS 중첩 네트워크 대비 서비스 발견

그래서 나는 마라톤으로 그걸 알아 내려고 놀았습니다.

{ 
    "volumes": null, 
    "id": "/mariadb10", 
    "cmd": null, 
    "args": null, 
    "user": null, 
    "env": { 
    "MYSQL_ROOT_PASSWORD": "foo" 
    }, 
    "instances": 1, 
    "cpus": 1, 
    "mem": 1024, 
    "disk": 0, 
    "gpus": 0, 
    "executor": null, 
    "constraints": null, 
    "fetch": null, 
    "storeUrls": null, 
    "backoffSeconds": 1, 
    "backoffFactor": 1.15, 
    "maxLaunchDelaySeconds": 3600, 
    "container": { 
    "docker": { 
     "image": "mariadb:10.0", 
     "forcePullImage": false, 
     "privileged": false, 
     "network": "USER" 
    }, 
    "type": "DOCKER", 
    "volumes": [ 
     { 
     "containerPath": "/var/lib/mysql", 
     "hostPath": "/mnt/foo", 
     "mode": "RW" 
     } 
    ] 
    }, 
    "healthChecks": [ 
    { 
     "protocol": "TCP", 
     "gracePeriodSeconds": 30, 
     "intervalSeconds": 10, 
     "timeoutSeconds": 10, 
     "maxConsecutiveFailures": 3, 
     "port": 3306 
    } 
    ], 
    "readinessChecks": null, 
    "dependencies": null, 
    "upgradeStrategy": { 
    "minimumHealthCapacity": 1, 
    "maximumOverCapacity": 1 
    }, 
    "labels": null, 
    "acceptedResourceRoles": null, 
    "ipAddress": { 
    "networkName": "dcos", 
    "discovery": { 
     "ports": [ 
      { "number": 3306, "name": "mysql", "protocol": "tcp" } 
      ] 
    } 
    }, 
    "residency": null, 
    "secrets": null, 
    "taskKillGracePeriodSeconds": null 
} 

마라톤 "다리"또는 "사용자"네트워크에 허용되지 않는 날이 말한다 : 내가 한 일은 IPADDRESS에 발견 블록을 추가했다. 그러나 다음과 같은 불평 용기 실행되지 않은 : 재미 것입니다

{ 
"volumes": null, 
"id": "/mariadb10", 
"cmd": null, 
"args": null, 
"user": null, 
"env": { 
    "MYSQL_ROOT_PASSWORD": "foo" 
}, 
"instances": 1, 
"cpus": 1, 
"mem": 1024, 
"disk": 0, 
"gpus": 0, 
"executor": null, 
"constraints": null, 
"fetch": null, 
"storeUrls": null, 
"backoffSeconds": 1, 
"backoffFactor": 1.15, 
"maxLaunchDelaySeconds": 3600, 
"container": { 
    "docker": { 
    "image": "mariadb:10.0", 
    "forcePullImage": false, 
    "privileged": false, 
    "network": "USER" 
    }, 
    "type": "DOCKER", 
    "volumes": [ 
    { 
     "containerPath": "/var/lib/mysql", 
     "hostPath": "/mnt/foo", 
     "mode": "RW" 
    } 
    ] 
}, 
"healthChecks": [ 
    { 
    "protocol": "TCP", 
    "gracePeriodSeconds": 30, 
    "intervalSeconds": 10, 
    "timeoutSeconds": 10, 
    "maxConsecutiveFailures": 3, 
    "port": 3306 
    } 
], 
"readinessChecks": null, 
"dependencies": null, 
"upgradeStrategy": { 
    "minimumHealthCapacity": 1, 
    "maximumOverCapacity": 1 
}, 
"labels": null, 
"acceptedResourceRoles": null, 
"ipAddress": { 
    "networkName": "dcos" 
}, 
"residency": null, 
"secrets": null, 
"taskKillGracePeriodSeconds": null 
} 

, 그것은 더 이상 오버레이 주소를 사용하지 않습니다,하지만 지금은 호스트 주소로 수신 또한 호스트가 오버레이 네트워크에 주소 발표 .

내가 잘못하고있는 것일까, 아니면 예상대로 작동하지 않는 것입니까?

답변

1

그래서

해결책을 직접 찾았습니다. 쉬운 해결 방법은 /opt/mesosphere/etc/mesos-dns.json을 편집하는 것입니다. 그런 다음 먼저 netinfo를 나열하도록 IPSources의 순서를 변경하십시오.

자세한 내용은, 당신은 또한 당신이 taskname.marathon.containerip.dcos.thisdcos.directory을 사용할 수 있습니다, 또는 here