Trying increasing the executor registration timeout on the slave (--executor_registration_timeout) to give docker more time to do a pull of the image.
On Mon, Sep 29, 2014 at 4:41 PM, Andy Grove <andy.gr...@codefutures.com> wrote: > Hi, > > I've working on a prototype Mesos framework to launch docker containers. > I'm getting as far as seeing my container start up but after one minute if > gets killed due to: > > Terminating executor default of framework > 20140929-155916-16777343-5050-2708-0004 because it did not register within > 1mins > > Here is the code I am using in my scheduler, which was based on one of the > examples: > > @Override > public void resourceOffers(SchedulerDriver schedulerDriver, > List<Protos.Offer> offers) { > logger.info("resourceOffers() with {} offers", offers.size()); > > for (Protos.Offer offer : offers) { > > List<Protos.TaskInfo> tasks = new ArrayList<Protos.TaskInfo>(); > if (launchedTasks < totalTasks) { > Protos.TaskID taskId = Protos.TaskID.newBuilder() > .setValue(Integer.toString(launchedTasks++)).build(); > > logger.info("Launching task " + taskId.getValue()); > > // docker image info > Protos.ContainerInfo.DockerInfo.Builder dockerInfoBuilder = > Protos.ContainerInfo.DockerInfo.newBuilder(); > dockerInfoBuilder.setImage("codefutures/dbshards_zookeeper"); > > // container info > Protos.ContainerInfo.Builder containerInfoBuilder = > Protos.ContainerInfo.newBuilder(); > containerInfoBuilder.setType(Protos.ContainerInfo.Type.DOCKER); > containerInfoBuilder.setDocker(dockerInfoBuilder.build()); > > // create executor for the container > Protos.ExecutorInfo executor = Protos.ExecutorInfo.newBuilder() > > .setExecutorId(Protos.ExecutorID.newBuilder().setValue("default")) > .setCommand(Protos.CommandInfo.newBuilder().setShell(false)) > .setContainer(containerInfoBuilder) > .setName("Test Executor (Docker)") > .setSource("docker_test") > .build(); > > // create task to run > Protos.TaskInfo task = Protos.TaskInfo.newBuilder() > .setName("task " + taskId.getValue()) > .setTaskId(taskId) > .setSlaveId(offer.getSlaveId()) > .addResources(Protos.Resource.newBuilder() > .setName("cpus") > .setType(Protos.Value.Type.SCALAR) > .setScalar(Protos.Value.Scalar.newBuilder().setValue(1))) > .addResources(Protos.Resource.newBuilder() > .setName("mem") > .setType(Protos.Value.Type.SCALAR) > .setScalar(Protos.Value.Scalar.newBuilder().setValue(128))) > .setExecutor(Protos.ExecutorInfo.newBuilder(executor)) > .build(); > > tasks.add(task); > } > Protos.Filters filters = > Protos.Filters.newBuilder().setRefuseSeconds(1).build(); > > schedulerDriver.launchTasks(offer.getId(), tasks, filters); > } > > } > > Am I missing some steps with this approach? > > Thanks, > > Andy. > > -- > Andy Grove > VP Engineering > CodeFutures Corporation > > >