Comment remplacer le runtime de conteneur dans Kubernetes

Frères! Vous savez probablement déjà que Kubernetes a abandonné la prise en charge de Docker en tant que conteneur d'exécution dans les versions futures. Dans la version 1.20 de fin 2020, Dockershim est obsolète. Dans la version 1.22, dont la sortie est prévue pour la fin de 2021, il est prévu d'abandonner complètement son support.





Si vous utilisez des clusters Kubernetes gérés (tels que GKE, EKS, AKS), ce ne sera pas un problème majeur pour vous et le changement sera probablement facile. Mais si vous gérez le cluster vous-même (par exemple, en utilisant kubeadm ) et utilisez le runtime du conteneur Docker, tôt ou tard, vous devrez le remplacer afin de pouvoir mettre à jour Kubernetes vers les dernières versions.





Le but de cet article n'est pas de fournir des informations exhaustives sur les raisons de cette décision de la part des développeurs Kubernetes ou d'étudier en détail le comportement de l'environnement d'exécution de conteneur spécifique dans un cluster Kubernetes. Au lieu de cela, nous découvrirons étape par étape comment basculer le runtime du conteneur Docker vers une autre solution prenant en charge le standard Container Runtime Interface ( CRI ). Si vous êtes intéressé par les raisons pour lesquelles l'utilisation de Docker n'est plus recommandée, consultez l'article du blog officiel de Kubernetes   Don't Panic: Kubernetes et Docker .





Pour ne pas manquer de nouveaux articles, abonnez-vous à la chaîne de télégramme Mops DevOps





Que vérifier en premier

, , . , , - Docker-in-Docker , Docker /var/run/docker.sock. (, Kaniko), Docker container runtime.





, !





!

, , container runtime, . containerd container runtime, , , CRI-O.





(worker nodes) (control plane).





Worker nodes

.





1) drain



cordon



, :





kubectl cordon <node_name>
kubectl drain <node_name>
      
      



: DaemonSets, --ignore-daemonsets



, pods. kubelet pods container runtime, . , DaemonSet, , , nodeSelector



DaemonSet, .





2) kubelet:





sudo systemctl stop kubelet
sudo systemctl status kubelet
      
      



3) Docker





, Linux Docker. , Docker, , (, /var/ lib/docker).





Docker.





4) countainerd .





5) Enable



  Start



  containerd:





sudo systemctl enable containerd
sudo systemctl start containerd
sudo systemctl status containerd
      
      



6) Kubernetes container runtime CRI . , containerd.





/etc/containerd/config.toml





disabled_plugins = [""]
      
      



, containerd:





sudo systemctl restart containerd
      
      



7) kubelet.





/var/lib/kubelet/kubeadm-flags.env KUBELET_KUBEADM_ARGS ( container runtime):





--container-runtime=remote --container-runtime-endpoint=/run/containerd/containerd.sock
      
      



8) kubelet:





sudo systemctl start kubelet
      
      



9) , container runtime:





kubectl describe node <node_name>
      
      



System Info:
  Machine ID:                 21a5dd31f86c4
  System UUID:                4227EF55-BA3BCCB57BCE
  Boot ID:                    77229747-9ea581ec6773
  Kernel Version:             3.10.0-1127.10.1.el7.x86_64
  OS Image:                   Red Hat Enterprise Linux Server 7.8 (Maipo)
  Operating System:           linux
  Architecture:               amd64
>>Container Runtime Version:  containerd://1.4.3
  Kubelet Version:            v1.20.2
  Kube-Proxy Version:         v1.20.2
      
      



10) Uncordon , , pods:





kubectl uncordon <node_name>
      
      



, , !





Control Plane

container runtime . , .





container runtime kube-apiserver, etcd coredns pods, . kubectl.





, container runtime :





1) journalctl, kubelet:





journalctl -u kubelet
      
      



2) containerd:





journalctl -u containerd
      
      



3) crictl, , :





crictl --runtime-endpoint /run/containerd/containerd.sock ps
      
      



4) container runtime , , :





kubectl describe node <master_node_name>

   ,        
kubectl get node -o wide
      
      



! Kubernetes Docker, .






- Mops DevOps - , , !








All Articles