[ 
https://issues.apache.org/jira/browse/MESOS-7210?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Deshi Xiao updated MESOS-7210:
------------------------------
    Comment: was deleted

(was: add below code to src/slave/containerizer/docker.cpp +359

```
dockerInfo.set_pid("host");
```)

> MESOS HTTP checks doesn't work when mesos runs with --docker_mesos_image ( 
> pid namespace mismatch )
> ---------------------------------------------------------------------------------------------------
>
>                 Key: MESOS-7210
>                 URL: https://issues.apache.org/jira/browse/MESOS-7210
>             Project: Mesos
>          Issue Type: Bug
>          Components: docker
>    Affects Versions: 1.1.0, 1.1.1, 1.2.0
>         Environment: Ubuntu 16.04.02
> Docker version 1.13.1
> mesos 1.1.0, runs from container
> docker containers  spawned by marathon 1.4.1
>            Reporter: Wojciech Sielski
>            Assignee: haosdent
>            Priority: Critical
>
> When running mesos-slave with option "docker_mesos_image" like:
> {code}
> --master=zk://standalone:2181/mesos  --containerizers=docker,mesos  
> --executor_registration_timeout=5mins  --hostname=standalone  --ip=0.0.0.0  
> --docker_stop_timeout=5secs  --gc_delay=1days  
> --docker_socket=/var/run/docker.sock  --no-systemd_enable_support  
> --work_dir=/tmp/mesos  --docker_mesos_image=panteras/paas-in-a-box:0.4.0
> {code}
> from the container that was started with option "pid: host" like:
> {code}
>   net:        host
>   privileged: true
>   pid:        host
> {code}
> and example marathon job, that use MESOS_HTTP checks like:
> {code}
> {
>  "id": "python-example-stable",
>  "cmd": "python3 -m http.server 8080",
>  "mem": 16,
>  "cpus": 0.1,
>  "instances": 2,
>  "container": {
>    "type": "DOCKER",
>    "docker": {
>      "image": "python:alpine",
>      "network": "BRIDGE",
>      "portMappings": [
>         { "containerPort": 8080, "hostPort": 0, "protocol": "tcp" }
>      ]
>    }
>  },
>  "env": {
>    "SERVICE_NAME" : "python"
>  },
>  "healthChecks": [
>    {
>      "path": "/",
>      "portIndex": 0,
>      "protocol": "MESOS_HTTP",
>      "gracePeriodSeconds": 30,
>      "intervalSeconds": 10,
>      "timeoutSeconds": 30,
>      "maxConsecutiveFailures": 3
>    }
>  ]
> }
> {code}
> I see the errors like:
> {code}
> F0306 07:41:58.844293    35 health_checker.cpp:94] Failed to enter the net 
> namespace of task (pid: '13527'): Pid 13527 does not exist
> *** Check failure stack trace: ***
>     @     0x7f51770b0c1d  google::LogMessage::Fail()
>     @     0x7f51770b29d0  google::LogMessage::SendToLog()
>     @     0x7f51770b0803  google::LogMessage::Flush()
>     @     0x7f51770b33f9  google::LogMessageFatal::~LogMessageFatal()
>     @     0x7f517647ce46  
> _ZNSt17_Function_handlerIFivEZN5mesos8internal6health14cloneWithSetnsERKSt8functionIS0_E6OptionIiERKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaISG_EEEUlvE_E9_M_invokeERKSt9_Any_data
>     @     0x7f517647bf2b  mesos::internal::health::cloneWithSetns()
>     @     0x7f517648374b  std::_Function_handler<>::_M_invoke()
>     @     0x7f5177068167  process::internal::cloneChild()
>     @     0x7f5177065c32  process::subprocess()
>     @     0x7f5176481a9d  
> mesos::internal::health::HealthCheckerProcess::_httpHealthCheck()
>     @     0x7f51764831f7  
> mesos::internal::health::HealthCheckerProcess::_healthCheck()
>     @     0x7f517701f38c  process::ProcessBase::visit()
>     @     0x7f517702c8b3  process::ProcessManager::resume()
>     @     0x7f517702fb77  
> _ZNSt6thread5_ImplISt12_Bind_simpleIFZN7process14ProcessManager12init_threadsEvEUt_vEEE6_M_runEv
>     @     0x7f51754ddc80  (unknown)
>     @     0x7f5174cf06ba  start_thread
>     @     0x7f5174a2682d  (unknown)
> I0306 07:41:59.077986     9 health_checker.cpp:199] Ignoring failure as 
> health check still in grace period
> {code}
> Looks like option docker_mesos_image makes, that newly started mesos job is 
> not using "pid host" option same as mother container was started, but has his 
> own PID namespace (so it doesn't matter if mother container was started with 
> "pid host" or not it will never be able to find PID)



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to