<p>I am very new to Kubernetes and trying to understand the difference between crio vs dockershim.</p>

<p>I was reading the manual on how to install kubernetes and I see that crio is recommended as a step (see link) <a href="https://kubernetes.io/docs/setup/production-environment/container-runtimes/#cri-o" rel="nofollow noreferrer">Container runtimes/cri-o</a>.</p>

<p>Yet I got more confused when I first tried to launch the pilot and I saw that by default kubernetes is using another cri tool (dockershim) as a default cri tool see link <a href="https://kubernetes.io/docs/tasks/debug-application-cluster/crictl/#installing-crictl" rel="nofollow noreferrer">crictl/General usage</a>.</p>

<p>My question is does it worth going through the installation procedure of CRI-O? I have found bugs that on the latest available release for centos7 (1.15.1-2.el7).</p>

<p>I also tested crio-v1.18.0 and the bugs seem to be fixed but on this case it seems that CRI-O can connect to port 10248 when using private repo to pull the pilot images.</p>

<p>Can someone share some light on this? Does it worth it to try to fix those bugs or I am spending too much time on this? </p>

Thanos
<p>Kubelet (node daemon of Kubernetes) communicates with the container runtime running on the node via <a href="https://kubernetes.io/blog/2016/12/container-runtime-interface-cri-in-kubernetes/" rel="nofollow noreferrer">Container Runtime Interface</a>. <code>dockershim</code>, as well as <code>crio</code> implement CRI, and act as a connectors between runtime and kubelet, but they refer to different container runtimes.</p>

<ul>
<li><code>dockershim</code> is a connector between kubelet and <strong>docker</strong></li>
<li><code>crio</code> is a connector between kubelet and <strong>runtime compliant with OCI spec</strong> (for example: runc)</li>
</ul>

<p>There are so many ways of setting up container runtimes. Various kubernetes distributions uses various container runtimes as their defaults (for example, Google Kubernetes Engine installed containerD runtime with containerD-shim when I tried it last time)</p>

<p>I'd say that if you want to start playing with kubernetes and want to have it stable, you should start with docker first (use dockershim as a CRI connector). It's most commonly tested way of using K8S.</p>
