Upgrading K8s CNI from Docker to CRI-O
Jun 06, 2020
May 03, 2022
2
minutes
Shifting from Docker to CRI-O seems complicated right? You might be afraid about unnecessary downtimes if things go south. This guide shows you how you can migrate to CRI-O without even crying. No teary eyes ;)
With that, let's start by tearing down your cluster, one node at a time. Starting with your precious, the first control plane node.
- uninstall docker
# Do this after you see cri-o working fine
- install crio
# Install essentials
# save the following config
- create /etc/containers/registries.conf for registry information error
/etc/containers/registries.conf
[registries.search]
['registry.access.redhat.com', 'registry.fedoraproject.org', 'quay.io', 'docker.io', 'k8s.gcr.io']
[registries.insecure]
[]
[registries.block]
[]
# Cri-o should be enabled from systemd for startup
- update kubelet for crio support
Full rundown of these config choices can be found at https://github.com/cri-o/cri-o/blob/main/tutorials/kubernetes.md
vi /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
[Service]
"KUBELET_EXTRA_ARGS=--container-runtime=remote --container-runtime-endpoint=unix:///var/run/crio/crio.sock --runtime-request-timeout=10m"
- update kubeadm to support crio
vi kubeadm-config.yaml
apiVersion: kubeadm.k8s.io/v1beta3
kind: InitConfiguration
nodeRegistration:
criSocket: /var/run/crio/crio.sock
# Use this command on your first control plane node