如何使用 mesos DCOS 和 marathon 创建持久卷

bar*_*nik 3 volume persistent dcos

使用以下命令时:

$ dcos marathon app add example.json
Run Code Online (Sandbox Code Playgroud)

我收到输出Error: Object is not valid

示例.json

{
"id": "es-cluster",
"env": {
    "MARATHON_URL": "http://127.0.0.1:8080",
    "APP_ID": "es-cluster",
    "ELASTICSEARCH_CLUSTER_NAME": "CLUSTERNAME"
},
"container": {
    "type": "DOCKER",
    "volumes": [
      {
            "containerPath": "data",
            "mode": "RW",
            "persistent": {
                "size": 1000
            }
      }
    ],
    "docker": {
        "image": "some/dockerImage",
        "network": "BRIDGE",
        "portMappings": [{
            "containerPort": 9200
        }, {
            "containerPort": 9300
        }]
    }
},
"cpus": 0.5,
"mem": 1024,
"instances": 2
}
Run Code Online (Sandbox Code Playgroud)

如果我删除卷块(或将其保留为空),它就可以正常工作。

还可以直接使用 Marathon 的音量块来运行它,效果非常好。

如何使用 DCOS 创建具有持久卷的应用程序?

bar*_*nik 5

让它工作。

尝试使用 Marathon api http://marathon-ip:8080/v2/apps发布 example.json并收到以下消息:

{"message":"对象无效","details":[{"path":"/value/upgradeStrategy","errors":["得到 1.0,预期 0.5 或更少","得到 1.0,预期 0.0 "]},{"path":"/value/isResident","errors":["必须为 false"]}]}

然后,我使用 Marathon UI 创建了应用程序(带有音量)并复制了 json 以供参考。我注意到马拉松添加了这个块:

  "upgradeStrategy": {
    "minimumHealthCapacity": 0.5,
    "maximumOverCapacity": 0
  }
Run Code Online (Sandbox Code Playgroud)

将此块添加到我原来的 example.json (发布在问题中)后,它起作用了。