Невозможно получить доступ к приложению 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 агента для доступа к приложению. Мне не хватало этого

Другие вопросы по тегам