<p dir="auto">Currently, any container runtime has to be linked into the kubelet.  This makes experimentation difficult, and prevents users from landing an alternate container runtime without landing code in core kubernetes.</p>
<p dir="auto">To facilitate experimentation and to enable user choice, we should add a client/server implementation of the container runtime interface.</p>
<p dir="auto">This implementation will simply encode the requests, send them to a server where they will be decoded and sent into an instance of the container runtime interface.</p>
<p dir="auto">However, this enables container runtime implementations to be built and maintained outside of the core kubernetes tree.</p>
<p dir="auto"><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dchen1107/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dchen1107">@dchen1107</a> <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><br>
@kubernetes/goog-node</p>
<p dir="auto"><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> raised this issue in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="36230582" data-permission-text="Title is private" data-url="https://github.com/kubernetes/kubernetes/issues/199" data-hovercard-type="issue" data-hovercard-url="/kubernetes/kubernetes/issues/199/hovercard" href="https://github.com/kubernetes/kubernetes/issues/199">#199</a>: how should Kubernetes support non-load-balanced and/or stateful services? Specifically, Zookeeper was the example.</p>
<p dir="auto">Zookeeper (or etcd) exhibits 3 common problems:</p>
<ol dir="auto">
<li>Identification of the instance(s) clients should contact</li>
<li>Identification of peers</li>
<li>Stateful instances</li>
</ol>
<p dir="auto">And it enables master election for other replicated services, which typically share the same problems, and probably need to advertise the elected master to clients.</p>