Невозможно получить доступ к приложению helloworld, развернутому с помощью DCOS Marathon в Azure
Я развернул приложение Hello World в Azure с использованием DCOS и Marathon Framework. Я пытаюсь получить доступ к нему с помощью fqn: portnumber, на котором размещено приложение. Я не могу открыть приложение
Ниже приводится JSON, который я использовал
{
"id": "/dockercloud-hello-world",
"cmd": null,
"cpus": 0.1,
"mem": 128,
"disk": 0,
"instances": 2,
"acceptedResourceRoles": [
"*"
],
"container": {
"type": "DOCKER",
"volumes": [],
"docker": {
"image": "dockercloud/hello-world",
"network": "BRIDGE",
"portMappings": [
{
"containerPort": 80,
"hostPort": 0,
"servicePort": 10000,
"protocol": "tcp",
"labels": {}
}
],
"privileged": false,
"parameters": [],
"forcePullImage": true
}
},
"healthChecks": [
{
"gracePeriodSeconds": 10,
"intervalSeconds": 2,
"timeoutSeconds": 10,
"maxConsecutiveFailures": 10,
"portIndex": 0,
"path": "/",
"protocol": "HTTP",
"ignoreHttp1xx": false
}
],
"portDefinitions": [
{
"port": 10000,
"protocol": "tcp",
"name": "default",
"labels": {}
}
]
}
Я добавил правило NSG Inbound для основного ресурса nsg Я добавил правило NAT для ресурса master lb, разрешив порт как пользовательский
2 ответа
В вашем примере host port
равно 0, Azure будет прослушивать ваш сервис на случайном порте. Вам нужно открыть порт на NSG и lb.
Я предлагаю вам указать порт, вы можете проверить следующий пример:
{
"id": "/dockercloud-hello-world",
"cmd": null,
"cpus": 0.1,
"mem": 32,
"disk": 0,
"instances": 1,
"acceptedResourceRoles": [
"slave_public"
],
"container": {
"type": "DOCKER",
"volumes": [],
"docker": {
"image": "dockercloud/hello-world",
"network": "BRIDGE",
"portMappings": [
{
"containerPort": 80,
"hostPort": 80,
"protocol": "tcp",
"labels": {},
"name": "test80"
}
],
"privileged": false,
"parameters": [],
"forcePullImage": true
}
},
"healthChecks": [
{
"gracePeriodSeconds": 10,
"intervalSeconds": 2,
"timeoutSeconds": 10,
"maxConsecutiveFailures": 10,
"portIndex": 0,
"path": "/",
"protocol": "MESOS_HTTP",
"ignoreHttp1xx": false
}
],
"requirePorts": true
}
Примечание: вы должны установить acceptedResourceRoles
в slave_public
, Более подробную информацию об этом, пожалуйста, проверьте эту ссылку.
Наряду с вышеупомянутым JSON мне нужно использовать URL агента для доступа к приложению. Мне не хватало этого