<p dir="auto">In many threads / meetings I mentioned that we are not satisfied with today's container runtime interface due to many reasons. Here are the top reasons off my head:</p>
<ul dir="auto">
<li>Duplicated code for supporting SyncPod for all container runtime implementations, especially with Kubernetes defined policy: StartPolicy, PullPolicy, etc. We talked about changing today's declarative API to imperative API at this lowest extensible point.</li>
<li>Tight coupled with image format: docker runtime supports docker image, while rkt support appc image by converting docker image to its own format. In a long run, we want to add support for other image format without changing each runtime. There is no easy way to achieve that goal with today's API.</li>
<li>Logging management is very different on different os distro and with different runtime implementation. We should make this pluggable with runtime.</li>
<li>Part of resource isolation is handled by runtime today, while another part is handled by Kubelet. The decision is ad-hoc without much thinking. We need to decide if we want runtime interface to handle resource management or completely hand over to ResourceManager module in Kubelet since qos policy is defined by Kubernetes, and it might be redefined over releases.</li>
<li>...</li>
</ul>
<p dir="auto">In my mind, we should separate image management, resource / cgroup management, logging management from today's runtime interface. After this effort, we effectively make today's runtime interface as pod / container lifecycle management interface.</p>
<p dir="auto">cc/ @kubernetes/sig-node, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bgrant0607/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bgrant0607">@bgrant0607</a><br>
cc/ <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/philips/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/philips">@philips</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jonboulle/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jonboulle">@jonboulle</a> <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/yifan-gu/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/yifan-gu">@yifan-gu</a> from coreos<br>
cc/ <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/smarterclayton/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/smarterclayton">@smarterclayton</a> <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/derekwaynecarr/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/derekwaynecarr">@derekwaynecarr</a> from redhat</p>
<p dir="auto"><strong>Is this a request for help?</strong> (If yes, you should use our troubleshooting guide and community support channels, see <a href="http://kubernetes.io/docs/troubleshooting/" rel="nofollow">http://kubernetes.io/docs/troubleshooting/</a>.):</p>
<p dir="auto"><strong>What keywords did you search in Kubernetes issues before filing this one?</strong> (If you have found any duplicates, you should instead reply there.):</p>
<p dir="auto"><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="179968541" data-permission-text="Title is private" data-url="https://github.com/kubernetes/kubernetes/issues/33729" data-hovercard-type="issue" data-hovercard-url="/kubernetes/kubernetes/issues/33729/hovercard" href="https://github.com/kubernetes/kubernetes/issues/33729">#33729</a></p>
<h2 dir="auto">they have a different bug</h2>
<p dir="auto"><strong>Is this a BUG REPORT or FEATURE REQUEST?</strong> (choose one):<br>
This is a BUG report</p>

<p dir="auto"><strong>Kubernetes version</strong> (use <code class="notranslate">kubectl version</code>):<br>
1.4.4<br>
kubeadm init --use-kubernetes-version v1.4.6<br>
kubeadm init --use-kubernetes-version v1.4.1<br>
etc.</p>
<p dir="auto"><strong>Environment</strong>:</p>
<ul dir="auto">
<li><strong>Cloud provider or hardware configuration</strong>:</li>
<li><strong>OS</strong> (e.g. from /etc/os-release):<br>
ubuntu 16.04</li>
<li><strong>Kernel</strong> (e.g. <code class="notranslate">uname -a</code>):</li>
<li><strong>Install tools</strong>:</li>
<li><strong>Others</strong>:</li>
</ul>
<p dir="auto"><strong>What happened</strong>:</p>
<p dir="auto">the containers stay in pause mode: docker.ps shows (sorry, i gave my best for table layout)<br>
COMMAND                 |                  NAMES<br>
------------------ | ---------------------<br>
"kube-controller-mana"                  |        k8s_kube-controller-manager.<br>
"kube-scheduler --v=2"                   |       k8s_kube-scheduler.<br>
"/pause"                                            |       k8s_POD.d8dbe16c_kube-controller-manager-<br>
"/pause"                                             |     k8s_POD.d8dbe16c_kube-apiserver-<br>
"/pause"                                              |     k8s_POD.d8dbe16c_etcd-<br>
"/pause"                                               |    k8s_POD.d8dbe16c_kube-scheduler</p>
<p dir="auto"><strong>What you expected to happen</strong>:<br>
start the api container at port 8080 / 6443</p>
<p dir="auto"><strong>How to reproduce it</strong> (as minimally and precisely as possible):</p>
<p dir="auto">I just followed the tutorials.<br>
<strong>Anything else do we need to know</strong>:</p>
<p dir="auto">I have nothing listening at port 8080 / 443 / 6443. I do not know which parts of the syslog could be helpful. The first part is here:<br>
<a href="http://pastebin.com/TUk1qsms" rel="nofollow">http://pastebin.com/TUk1qsms</a></p>
<p dir="auto">then come <strong>a lot</strong> of <code class="notranslate">xy.service not handled by systemd</code></p>
<p dir="auto">and then the useless attempts to connect to the (paused) node:</p>
<p dir="auto"><code class="notranslate">26360 manager.go:843] ignoring container "/system.slice/dev-hugepages.mount"</code><br>
<code class="notranslate">Nov 15 18:15:52 laptop kubelet[26360]: I1115 18:15:52.800147   26360 conversion.go:133] failed to handle multiple devices for container. Skipping Filesystem stats</code><br>
<code class="notranslate">Nov 15 18:15:52 laptop kubelet[26360]: E1115 18:15:52.825236   26360 eviction_manager.go:162] eviction manager: unexpected err: failed GetNode: node 'laptop.tu' not found</code><br>
<code class="notranslate">Nov 15 18:15:52 laptop kubelet[26360]: I1115 18:15:52.849907   26360 kubelet_node_status.go:203] Setting node annotation to enable volume controller attach/detach</code><br>
<code class="notranslate">Nov 15 18:15:52 laptop kubelet[26360]: I1115 18:15:52.854325   26360 kubelet_node_status.go:354] Recording NodeHasSufficientDisk event message for node laptop.tu</code><br>
<code class="notranslate">Nov 15 18:15:52 laptop kubelet[26360]: I1115 18:15:52.854354   26360 kubelet_node_status.go:354] Recording NodeHasSufficientMemory event message for node laptop.tu</code><br>
<code class="notranslate">Nov 15 18:15:52 laptop kubelet[26360]: I1115 18:15:52.854367   26360 kubelet_node_status.go:354] Recording NodeHasNoDiskPressure event message for node laptop.tu</code><br>
<code class="notranslate">Nov 15 18:15:52 laptop kubelet[26360]: I1115 18:15:52.854385   26360 kubelet_node_status.go:73] Attempting to register node laptop.tu</code><br>
<code class="notranslate">Nov 15 18:15:52 laptop kubelet[26360]: I1115 18:15:52.854410   26360 server.go:608] Event(api.ObjectReference{Kind:"Node", Namespace:"", Name:"laptop.tu", UID:"laptop.tu", APIVersion:"", ResourceVersion:"", FieldPath:""}): type: 'Normal' reason: 'NodeHasSufficientDisk' Node laptop.tu status is now: NodeHasSufficientDisk</code><br>
<code class="notranslate">Nov 15 18:15:52 laptop kubelet[26360]: I1115 18:15:52.854466   26360 server.go:608] Event(api.ObjectReference{Kind:"Node", Namespace:"", Name:"laptop.tu", UID:"laptop.tu", APIVersion:"", ResourceVersion:"", FieldPath:""}): type: 'Normal' reason: 'NodeHasSufficientMemory' Node laptop.tu status is now: NodeHasSufficientMemory</code><br>
<code class="notranslate">Nov 15 18:15:52 laptop kubelet[26360]: I1115 18:15:52.854594   26360 server.go:608] Event(api.ObjectReference{Kind:"Node", Namespace:"", Name:"laptop.tu", UID:"laptop.tu", APIVersion:"", ResourceVersion:"", FieldPath:""}): type: 'Normal' reason: 'NodeHasNoDiskPressure' Node laptop.tu status is now: NodeHasNoDiskPressure</code><br>
<code class="notranslate">Nov 15 18:15:52 laptop kubelet[26360]: E1115 18:15:52.854691   26360 kubelet_node_status.go:97] Unable to register node "laptop.tu" with API server: Post https://192.168.0.2:6443/api/v1/nodes: dial tcp 192.168.0.2:6443: getsockopt: connection refused</code></p>
<p dir="auto">It does this for the next couple of hours. Then I kick my laptop out of the window. Usually this stops the entrys.</p>
<p dir="auto">What can I do? Where is the one parameter to rule the stuff? Do you need more information?</p>