<p>Is it possible to have ONE <code>kubernetes</code> cluster with multiple container runtime engines like <code>rkt</code>, docker both active at a time? So that I can have </p>

<ul>
<li>Two applications with two different container images.</li>
<li>One application with multiple services from different images.</li>
</ul>

Sudhakar MNSR
<p>From Kubernetes 1.5 it has been introduced the <code>Container Runtime Interface (CRI)</code> – a plugin interface which enables kubelet to use a wide variety of container runtimes, without the need to recompile. </p>

<p>Kubelet communicates with the container runtime (or a CRI shim for the runtime) over Unix sockets using the gRPC framework, where kubelet acts as a client and the CRI shim as the server.</p>

<p><a href="https://i.stack.imgur.com/NgSNs.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/NgSNs.png" alt="enter image description here"></a></p>

<p>CRI allows runtime-specific implementations and enables Kubernetes to have a cluster with mixed nodes (with container-runtime: docker, rkt) and specify for each node the container you want to use. </p>

<p>Kubelet has a property for that:</p>

<pre><code>--container-runtime string
    The container runtime to use. Possible values: 'docker', 'rkt'. (default "docker")
</code></pre>

<p>Reference: </p>

<ul>
<li><p><a href="https://kubernetes.io/blog/2016/12/container-runtime-interface-cri-in-kubernetes/" rel="nofollow noreferrer">https://kubernetes.io/blog/2016/12/container-runtime-interface-cri-in-kubernetes/</a></p></li>
<li><p><a href="https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/" rel="nofollow noreferrer">https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/</a></p></li>
</ul>
