java—在docker容器中运行自定义执行器,由mesos的自定义调度程序启动

1tu0hz3e  于 2021-06-26  发布在  Mesos
关注(0)|答案(0)|浏览(317)

mesos定制框架:我们的目标是启动docker容器。这个docker容器应该运行自定义的executor,如果容器有权访问作为uri的一部分传递的jar文件,这是可能的。这是作为框架起点的独立主类的一部分编辑的代码摘录。

String path = "http://localhost/example/example-1.0-SNAPSHOT-jar-with-dependencies.jar";
Protos.CommandInfo.URI uri = Protos.CommandInfo.URI.newBuilder().setValue(path).setExtract(false).build();

String command = "java -cp example-1.0-SNAPSHOT-jar-with-dependencies.jar com.example.ExampleExecutor";
Protos.CommandInfo commandInfo = Protos.CommandInfo.newBuilder().setValue(command).addUris(uri).build();

Protos.ContainerInfo.DockerInfo.Builder dockerInfo = Protos.ContainerInfo.DockerInfo.newBuilder();
dockerInfo.setImage(imageName);
dockerInfo.setNetwork(Protos.ContainerInfo.DockerInfo.Network.BRIDGE);

Protos.ContainerInfo.Builder containerInfo = Protos.ContainerInfo.newBuilder();
containerInfo.setType(Protos.ContainerInfo.Type.DOCKER);
containerInfo.setDocker(dockerInfo.build());

Protos.ExecutorInfo exampleExecutor = Protos.ExecutorInfo.newBuilder()
    .setExecutorId(Protos.ExecutorID.newBuilder().setValue("ExampleExecutor"))
        .setCommand(commandInfo)
        .setName("Example Executor")
        .setContainer(containerInfo)
        .setSource("java")
    .build();

mesos定制调度器:下面是用于启动docker任务的代码摘录。我们想把docker作为一个执行者而不是一个任务来运行。

Protos.TaskInfo task = Protos.TaskInfo.newBuilder()
                                .setName("task " + taskId).setTaskId(taskId)
                                .setSlaveId(offer.getSlaveId())
                                .addResources(buildResource("cpus", job.getCpu()))
                                .addResources(buildResource("mem", 128))                                     .setData(ByteString.copyFromUtf8(ExampleModelObject.toJSON()))

.setExecutor(Protos.ExecutorInfo.newBuilder(exampleExecutor))
                                .build();

我不知道它到底在做什么。我们的容器是由mesos启动的,但是容器中没有jar文件,因此在容器中运行executor类的命令失败,原因是无法加载main类。另外,我不确定docker容器是否作为任务或执行者运行。在网上没有发现任何相关问题。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题