Conmutador de motor de contenedor de clúster de Kubernetes

Este artículo describe cómo cambiar el motor de contenedor en un clúster de Kubernetes de Docker a containerd

Documento oficial: https://kubernetes.io/zh/docs/setup/production-environment/container-runtimes/#containerd

alrededores

  • SO: CentOS 7.8
  • Tiempo de ejecución del contenedor: Docker CE 19.03.9
  • Gobernadores: v1.20

1. Ver el motor de contenedores que se usa actualmente en el clúster de Kubernetes

Conmutador de motor de contenedor de clúster de Kubernetes

2. Cambie el motor de contenedor del nodo k8s-node02 de Docker a containerd

2. 1 Marque el nodo como no programable y expulse los recursos del pod en el nodo

# 1、查看该node当前运行一个名为web-96d5df5c8-s7lnq的pod
# kubectl get pods -o wide
NAME                  READY   STATUS    RESTARTS   AGE   IP              NODE         NOMINATED NODE   READINESS GATES
web-96d5df5c8-s7lnq   1/1     Running   0          19m   10.244.58.195   k8s-node02   <none>           <none>

# 2、将该node标记为不可被调度
# kubectl cordon k8s-node02 

# 3、驱逐该node节点上的pod资源到集群中的其它节点上去
# kubectl drain k8s-node02 --delete-local-data --force --ignore-daemonsets

# 4、查看之前运行在该node上的pod被调度到了集群中的哪个节点
# kubectl get pods -o wide
NAME                  READY   STATUS    RESTARTS   AGE   IP              NODE         NOMINATED NODE   READINESS GATES
web-96d5df5c8-m8s7d   1/1     Running   0          57s   10.244.85.195   k8s-node01   <none>           <none>
从以上信息来看可以发现,之前k8s-node02节点上的pod资源被驱逐到了k8s-node01上运行

# 5、查看Kubernetes集群中的node资源信息
# kubectl get nodes
NAME           STATUS                     ROLES                  AGE     VERSION
k8s-master01   Ready                      control-plane,master   4h20m   v1.20.0
k8s-node01     Ready                      <none>                 3h47m   v1.20.0
k8s-node02     Ready,SchedulingDisabled   <none>                 3h47m   v1.20.0
如上信息,k8s-node02节点已经不可被调度了,接下来开始切换容器引擎

2.2, cambiar el motor del contenedor

2.2.1 Requisitos previos de configuración

# cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf
overlay
br_netfilter
EOF

# modprobe overlay
# modprobe br_netfilter

# 设置必需的 sysctl 参数,这些参数在重新启动后仍然存在。
# cat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes-cri.conf
net.bridge.bridge-nf-call-iptables  = 1 
net.ipv4.ip_forward                 = 1 
net.bridge.bridge-nf-call-ip6tables = 1 
EOF

# sysctl --system

2.2.2 Instalar contenedord

# yum install -y yum-utils device-mapper-persistent-data lvm2
# yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
# yum install -y containerd.io
# mkdir -p /etc/containerd
# containerd config default | sudo tee /etc/containerd/config.toml
# systemctl restart containerd.service

2.2.3 Modificar el archivo de configuración

# 1、搜索关键字"sandbox_image",将镜像地址替换为国内阿里云的
57     sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.2"

# 2、指定使用systemd作为Cgroup的驱动程序
需要添加,这里是在96后,也可以搜素关键字"options",在其下一行添加如下内容
97             SystemdCgroup = "true"

# 3、搜索关键字"endpoint",修改镜像加速地址
106           endpoint = ["https://5uhltnnr.mirror.aliyuncs.com"]

# 4、重启containerd
# systemctl restart containerd.service

2.2.4 Configurar kubelet para usar containerd

# vim /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--container-runtime=remote --container-runtime-endpoint=unix:///run/containerd/containerd.sock --cgroup-driver=systemd"

# systemctl status kubelet

3. Verifique si el motor del contenedor se cambió correctamente a contenedord

Conmutador de motor de contenedor de clúster de Kubernetes

A partir de los resultados de la información en la figura anterior, se puede encontrar que el motor de contenedor que utiliza actualmente el nodo k8s-node02 está en contenedor. Hasta ahora, el motor de contenedor que utiliza el nodo se ha cambiado correctamente de la ventana acoplable a la de contenedor. Siguiente. Cancele la marca no programable del nodo para que pueda programarse normalmente.

4. Cancele la marca no programable del nodo k8s-node02

# kubectl uncordon k8s-node02
node/k8s-node02 uncordoned
# kubectl get nodes
NAME           STATUS   ROLES                  AGE     VERSION
k8s-master01   Ready    control-plane,master   5h1m    v1.20.0
k8s-node01     Ready    <none>                 4h28m   v1.20.0
k8s-node02     Ready    <none>                 4h28m   v1.20.4

Supongo que te gusta

Origin blog.51cto.com/hexiaoshuai/2664271
Recomendado
Clasificación