Ich versuche, die beständige Volumenunterstützung für Mesos zu verwenden, und habe eine enorm schwierige Zeit, es zur Arbeit zu bringen.Mesos-Slaves lehnen alle Marathon-Jobs mit persistenten Volumes ab; Ansprüche kein Platz verfügbar
Ich habe jedes meiner Sklaven konfiguriert, wie folgt, und haben bestätigt, dass sie erfolgreich diese neue config neu gestartet haben:
/etc/Mesos-Slave/Ressourcen
[
{
"name" : "disk",
"type" : "SCALAR",
"scalar" : { "value" : 4194304 },
"disk" : {
"source" : {
"type" : "PATH",
"path" : { "root" : "/mnt/disk1" }
}
}
},
{
"name" : "disk",
"type" : "SCALAR",
"scalar" : { "value" : 4194304 },
"disk" : {
"source" : {
"type" : "PATH",
"path" : { "root" : "/mnt/disk2" }
}
}
},
{
"name" : "disk",
"type" : "SCALAR",
"scalar" : { "value" : 4194304 },
"disk" : {
"source" : {
"type" : "PATH",
"path" : { "root" : "/mnt/disk3" }
}
}
},
{
"name" : "disk",
"type" : "SCALAR",
"scalar" : { "value" : 4194304 },
"disk" : {
"source" : {
"type" : "PATH",
"path" : { "root" : "/mnt/disk4" }
}
}
},
{
"name" : "disk",
"type" : "SCALAR",
"scalar" : { "value" : 4194304 },
"disk" : {
"source" : {
"type" : "PATH",
"path" : { "root" : "/mnt/disk5" }
}
}
},
{
"name" : "disk",
"type" : "SCALAR",
"scalar" : { "value" : 4194304 },
"disk" : {
"source" : {
"type" : "MOUNT",
"mount" : { "root" : "/mnt/disk6" }
}
}
},
{
"name" : "disk",
"type" : "SCALAR",
"scalar" : { "value" : 4194304 },
"disk" : {
"source" : {
"type" : "MOUNT",
"mount" : { "root" : "/mnt/disk7" }
}
}
}
]
Es zeigt insbesondere, dass ich uneingeschränkte Ressourcen habe. Insbesondere (vollständige Antwort here):
{
...
"slaves": [{
"id": "c5e59876-5157-463f-b31e-16b34d6ffc72-S8",
"pid": "slave(1)@172.30.31.55:5051",
"hostname": "redacted47.redacted.com",
"registered_time": 1458810586.61153,
"resources": {
"cpus": 32,
"disk": 29360128,
"mem": 256651,
"ports": "[31000-32000]"
},
"used_resources": {
"cpus": 1,
"disk": 0,
"mem": 128,
"ports": "[31282-31282]"
},
"offered_resources": {
"cpus": 0,
"disk": 0,
"mem": 0
},
"reserved_resources": {},
"unreserved_resources": {
"cpus": 32,
"disk": 29360128,
"mem": 256651,
"ports": "[31000-32000]"
},
Jedes Mal, wenn ich versuche, einen Job zu unterbreiten, die ein persistentes Volumen anfordert, alle Slaves ablehnen und behauptet, dass es keine Datenträger-Ressource zur Verfügung:
Mar 26 17:59:43 redacted47.redacted.com start[30457]: [2016-03-26 17:59:43,606] INFO Offer [2220b6bf-aac2-402b-82e6-8d625284d1a4-O9375]. Considering unreserved resources with roles {*}. Not all basic resources satisfied: cpus SATISFIED (1.0 <= 1.0), mem SATISFIED (128.0 <= 128.0), disk including volumes NOT SATISFIED (1024.0 > 0.0) (mesosphere.mesos.ResourceMatcher$:marathon-akka.actor.default-dispatcher-38)
Mar 26 17:59:43 redacted47.redacted.com start[30457]: [2016-03-26 17:59:43,606] INFO Offer [2220b6bf-aac2-402b-82e6-8d625284d1a4-O9376]. Considering unreserved resources with roles {*}. Not all basic resources satisfied: cpus SATISFIED (1.0 <= 1.0), mem SATISFIED (128.0 <= 128.0), disk including volumes NOT SATISFIED (1024.0 > 0.0) (mesosphere.mesos.ResourceMatcher$:marathon-akka.actor.default-dispatcher-38)
Mar 26 17:59:43 redacted47.redacted.com start[30457]: [2016-03-26 17:59:43,606] INFO Finished processing 2220b6bf-aac2-402b-82e6-8d625284d1a4-O9375. Matched 0 ops after 1 passes. disk(*) 4194304.0; disk(*) 4194304.0; disk(*) 4194304.0; disk(*) 4194304.0; disk(*) 4194304.0; disk(*) 4194304.0; disk(*) 4194304.0; cpus(*) 28.0; mem(*) 226955.0; ports(*) 31000->31085,31087->31364,31366->31940,31942->32000 left. (mesosphere.marathon.core.matcher.manager.impl.OfferMatcherManagerActor:marathon-akka.actor.default-dispatcher-11)
Mar 26 17:59:43 redacted47.redacted.com start[30457]: [2016-03-26 17:59:43,606] INFO Offer [2220b6bf-aac2-402b-82e6-8d625284d1a4-O9379]. Considering unreserved resources with roles {*}. Not all basic resources satisfied: cpus SATISFIED (1.0 <= 1.0), mem SATISFIED (128.0 <= 128.0), disk including volumes NOT SATISFIED (1024.0 > 0.0) (mesosphere.mesos.ResourceMatcher$:marathon-akka.actor.default-dispatcher-38)
Wenn ich versuche, einen Antrag zu stellen ein Volumen direkt gegen den Mesos Master zu erstellen, dann lehnt er die Anforderung, „nicht genügend Festplattenressourcen“ zu sagen, wie folgt:
# curl -v -i \
-u "marathon:$(cat /etc/marathon/.secret)" \
-d slaveId=c5e59876-5157-463f-b31e-16b34d6ffc72-S8 \
-d volumes='[
{
"name": "disk",
"type": "SCALAR",
"scalar": { "value": 512 },
"role": "foo",
"reservation": {
"principal": "marathon"
},
"disk": {
"persistence": {
"id" : "very-persist"
},
"volume": {
"mode": "RW",
"container_path": "such-path"
}
}
}
]' \
-X POST http://localhost:5050/master/create-volumes; echo
* About to connect() to localhost port 5050 (#0)
* Trying ::1...
* Connection refused
* Trying 127.0.0.1...
* Connected to localhost (127.0.0.1) port 5050 (#0)
* Server auth using Basic with user 'marathon'
> POST /master/create-volumes HTTP/1.1
> Authorization: Basic redacted
> User-Agent: curl/7.29.0
> Host: localhost:5050
> Accept: */*
> Content-Length: 481
> Content-Type: application/x-www-form-urlencoded
>
* upload completely sent off: 481 out of 481 bytes
< HTTP/1.1 409 Conflict
HTTP/1.1 409 Conflict
< Date: Thu, 24 Mar 2016 09:50:36 GMT
Date: Thu, 24 Mar 2016 09:50:36 GMT
< Content-Length: 53
Content-Length: 53
<
* Connection #0 to host localhost left intact
Invalid CREATE Operation: Insufficient disk resources
Ich bin am Ende. Ich weiß nicht, was ich mache, und ich versuche mein Bestes, um der Dokumentation zu folgen. Jeder Hinweis darauf, was ich falsch machen könnte, wäre sehr, sehr geschätzt.
Ich bin mit:
- Mesos
0.28.0
- Marathon
1.0.0RC1
Ich folge den Anweisungen in den folgenden Quellen, so gut wie ich kann:
- https://mesosphere.github.io/marathon/docs/persistent-volumes.html
- http://mesos.apache.org/documentation/latest/persistent-volume/
- http://mesos.apache.org/documentation/latest/multiple-disk/
Vielen Dank für das Lesen!
Wunderbar! Vielen Dank! Ich habe den Anruf erhalten, um erfolgreich zu sein. Und jetzt verstehe ich besser, was es bedeutet, dass persistente Volumes mit reservierten Ressourcen erzeugt werden, entweder dynamisch zugewiesen oder über/etc/mesos-slave/resources vorreserviert. Es scheint, dass Marathon keine Unterstützung für Nicht-Root-Volumes bietet; die persistenten Volumes. In der Datenstruktur, die ein persistentes Volume beschreibt, ist einfach kein Platz für die Angabe des Datenträgertyps. https://github.com/mesasphere/marathon/blob/v1.0.0-RC1/src/main/scala/mosphere/marathon/state/Volume.scala#L107 Es scheint, es wäre trivial hinzuzufügen? –