Marathon: taskKillGracePeriodSeconds funktioniert nicht

Erstellt am 9. Sept. 2016  ·  13Kommentare  ·  Quelle: mesosphere/marathon

Hallo,
Ich verwende Mesos 1.0.1 und Marathon 1.3.0-RC6, wenn ich "taskKillGracePeriodSeconds" setze, App nicht auf Marathon bereitstellen, wird es nicht wirksam. Aus meiner Sicht erkennt Marathon UI dieses Feld nicht.

Hilfreichster Kommentar

Das taskKillGracePeriodSeconds ist also eine unbekannte Eigenschaft für die Benutzeroberfläche, sodass es beim Filtern entfernt wird. Das Erstellen eines neuen Dienstes sollte problemlos funktionieren, aber beim Bearbeiten wird dieser Wert vollständig ignoriert.

Die einzige Lösung besteht derzeit darin, die API zum Bearbeiten zu verwenden, aber ich werde prüfen, ob wir den Fix auf die Version 1.1.5 der Benutzeroberfläche zurückportieren können.

Alle 13 Kommentare

Hallo @robfrut135 ,

Ich habe dies vor ein paar Sekunden erneut getestet und konnte eine App mit taskKillGracePeriodSeconds über die Benutzeroberfläche konfigurieren, die erkannt und korrekt übergeben wird. Könnten Sie bitte Ihre App-Definition einfügen?

Danke
Johannes

Hallo,
Ich habe diese Schritte befolgt:

Von der Benutzeroberfläche:

captura de pantalla de 2016-09-09 18 52 09

captura de pantalla de 2016-09-09 18 37 08

captura de pantalla de 2016-09-09 18 37 24

JSON von der API:

captura de pantalla de 2016-09-09 18 42 33

Hier das vollständige JSON (einige interne Daten entfernen)

{ "app": { "id": "/genesis/dev/plaid", "cmd": null, "args": [ "kst-genesis/plaid/dev" ], "user": null, "env": { "CONSUL": "consul.service.consul:8500" }, "instances": 1, "cpus": 0.2, "mem": 512, "disk": 0, "gpus": 0, "executor": "", "constraints": [ [ "hostname", "UNIQUE" ] ], "uris": [ ], "fetch": [ ], "storeUrls": [ ], "backoffSeconds": 5, "backoffFactor": 2, "maxLaunchDelaySeconds": 60, "container": { "type": "DOCKER", "volumes": [ ], "docker": { "image": "genesis-plaid:0.0.2", "network": "BRIDGE", "portMappings": [ { "containerPort": 9000, "hostPort": 0, "servicePort": 10011, "protocol": "tcp", "labels": { } } ], "privileged": false, "parameters": [ ], "forcePullImage": true } }, "healthChecks": [ { "path": "/v1/plaid/health", "protocol": "HTTP", "portIndex": 0, "gracePeriodSeconds": 30, "intervalSeconds": 20, "timeoutSeconds": 20, "maxConsecutiveFailures": 5, "ignoreHttp1xx": false } ], "readinessChecks": [ ], "dependencies": [ ], "upgradeStrategy": { "minimumHealthCapacity": 1, "maximumOverCapacity": 1 }, "labels": { "subtopic": "plaid", "tags": "genesis,plaid,aggregators", "version": "v0.0.3", "topic": "genesis" }, "acceptedResourceRoles": null, "ipAddress": null, "version": "2016-09-08T11:45:31.503Z", "residency": null, "secrets": { }, "taskKillGracePeriodSeconds": null, "ports": [ 10011 ], "portDefinitions": [ { "port": 10011, "protocol": "tcp", "labels": { } } ], "requirePorts": false, "versionInfo": { "lastScalingAt": "2016-09-08T11:45:31.503Z", "lastConfigChangeAt": "2016-09-08T11:45:31.503Z" }, "tasksStaged": 0, "tasksRunning": 1, "tasksHealthy": 1, "tasksUnhealthy": 0, "deployments": [ ], "tasks": [ { "id": "genesis_dev_plaid.c23547d8-75b9-11e6-9376-069d0696a105", "slaveId": "63aa66c3-527e-46ec-b1b2-4b7f69f96c46-S0", "host": "xxxxxxx", "state": "TASK_RUNNING", "startedAt": "2016-09-08T11:45:38.073Z", "stagedAt": "2016-09-08T11:45:36.905Z", "ports": [ 31064 ], "version": "2016-09-08T11:45:31.503Z", "ipAddresses": [ { "ipAddress": "172.17.0.9", "protocol": "IPv4" } ], "appId": "/genesis/dev/plaid", "healthCheckResults": [ { "alive": true, "consecutiveFailures": 0, "firstSuccess": "2016-09-09T06:28:37.964Z", "lastFailure": null, "lastSuccess": "2016-09-09T16:42:33.056Z", "lastFailureCause": null, "taskId": "genesis_dev_plaid.c23547d8-75b9-11e6-9376-069d0696a105" } ] } ], "lastTaskFailure": { "appId": "/genesis/dev/plaid", "host": "xxxxxxxxxxxxx", "message": "Task was killed since health check failed. Reason: 404 Not Found", "state": "TASK_KILLED", "taskId": "genesis_dev_plaid.9113d602-75b7-11e6-9376-069d0696a105", "timestamp": "2016-09-08T11:31:50.282Z", "version": "2016-09-08T11:11:08.935Z", "slaveId": "63aa66c3-527e-46ec-b1b2-4b7f69f96c46-S0" } } }

Ich hoffe, dass diese Informationen nützlich sind.

Was ist mit diesem Problem? Hast du es reproduzieren können?

Ich habe auf Marathon 1.3.0 aktualisiert. Das Problem schlägt weiterhin fehl.

Ja, ich konnte es reproduzieren, dass das Feld taskKillGracePeriodSeconds in der Marathon-Benutzeroberfläche nicht erkannt wird.

//cc @wavesoft

taskKillGracePeriodSeconds schien bei mir nicht zu funktionieren, wenn die App auch mit dem Endpunkt POST /v2/apps erstellt wurde.

@unterstein Wie bist du dazu gekommen, deine App mit taskKillGracePeriodSeconds zu konfigurieren?

Gemäß diesem Dokument: https://mesosphere.github.io/marathon/docs/health-checks.html

taskKillGracePeriodSeconds ist ein Label einer Anwendung. cc @robfrut135

Was er getan hat, nicht wahr, @tgermain ?

FWIW, das ist meine App-Definition:

{
  "id": "/test-app",
  "cmd": null,
  "cpus": 1,
  "mem": 256,
  "disk": 0,
  "instances": 1,
  "constraints": [
    [
      "hostname",
      "GROUP_BY"
    ]
  ],
  "container": {
    "type": "DOCKER",
    "volumes": [],
    "docker": {
      ...
    }
  },
  "healthChecks": [
    {
      "path": "/health",
      "protocol": "HTTP",
      "portIndex": 0,
      "gracePeriodSeconds": 90,
      "intervalSeconds": 60,
      "timeoutSeconds": 2,
      "maxConsecutiveFailures": 3,
      "ignoreHttp1xx": false
    }
  ],
  "portDefinitions": [
    {
      "port": 10041,
      "protocol": "tcp",
      "labels": {}
    }
  ],
  "args": [
    ...
  ],
  "taskKillGracePeriodSeconds": 10,
  "backoffFactor": 2,
  "upgradeStrategy": {
    "minimumHealthCapacity": 1,
    "maximumOverCapacity": 0.5
  }
}

Es ist, ich habe das Dokument falsch gelesen:

Um die erforderliche Nachfrist festzulegen, fügen Sie Ihrer Anwendungsdefinition das Label taskKillGracePeriodSeconds hinzu:

"taskKillGracePeriodSeconds": 10

Es ist ein appDefinition-Schlüssel (wie in json key/value) und keines der Labels Ihrer appDefinition.

Das offizielle Dokument der Marathon Rest API ist korrekt.

Ein vollständiges appDefinition-Beispiel wäre eine großartige Ergänzung zum Dokument, um den letzten Teil eindeutig zu machen. Ich werde das tun.

Irgendwelche Fortschritte zu diesem Thema? Das wird für uns zum Problem.

/cc @orlandohohmeier klingt nach einem UI-Bug?

Das taskKillGracePeriodSeconds ist also eine unbekannte Eigenschaft für die Benutzeroberfläche, sodass es beim Filtern entfernt wird. Das Erstellen eines neuen Dienstes sollte problemlos funktionieren, aber beim Bearbeiten wird dieser Wert vollständig ignoriert.

Die einzige Lösung besteht derzeit darin, die API zum Bearbeiten zu verwenden, aber ich werde prüfen, ob wir den Fix auf die Version 1.1.5 der Benutzeroberfläche zurückportieren können.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen