CentOS7.9 + Kubernetes 1.18.20 -清理所有 docker / containerd 残留

📅 2026/8/9 23:10:20
CentOS7.9 + Kubernetes 1.18.20 -清理所有 docker / containerd 残留
环境说明CentOS 7.9K8s‑1.18.20规避 Docker24 移除 dockershim 的 CRI 报错问题使用稳定版本docker‑20.10.24自带 dockershim原生兼容 k8s1.18。 故障背景Docker26 版本过高dockershim 被移除kubeadm 报connection closed before server preface received包冲突、残留导致安装失败。前置彻底清理所有 docker /containerd 残留bashsystemctl stop docker 2/dev/null systemctl disable docker 2/dev/null #强制卸载跳过预卸载脚本 rpm -e --nodeps --noscripts docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin 2/dev/null #删除旧版冲突插件包 rpm -e --nodeps docker-buildx-plugin rpm -e --nodeps docker-ce-rootless-extras-26.1.4-1.el7.x86_64 rpm -e --nodeps docker-compose-plugin-2.27.1-1.el7.x86_64 #清理目录残留 rm -rf /var/lib/docker rm -rf /var/lib/containerd rm -rf /etc/docker rm -rf /etc/containerd rm -rf /usr/lib/systemd/system/containerd.service rm -f /var/run/docker.sock systemctl daemon-reload校验包是否清理干净输出为空才算成功bashrpm -qa | grep -E docker|containerd步骤 1安装稳定版本 docker‑20.10.24 containerd.io‑1.4.13不要安装最新 docker 版本高版本移除 dockershimK8s1.18 无法对接 CRI 接口。bashyum install -y yum-utils yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo #指定版本安装 yum install -y docker-ce-20.10.24 docker-ce-cli-20.10.24 containerd.io-1.4.13-3.1.el7安装后验证bashdocker --version #预期输出Docker version 20.10.24 which containerd #预期输出/usr/bin/containerd ls -l /usr/lib/systemd/system/containerd.service步骤 2配置 Docker 镜像加速器并启动服务bashmkdir -p /etc/docker cat /etc/docker/daemon.json EOF { registry-mirrors: [https://docker.mirrors.ustc.edu.cn] } EOF systemctl enable --now docker systemctl status docker校验 docker socketbashls -l /var/run/docker.sock✅ docker‑20.10.24 内置 dockershim原生 CRI 接口k8s1.18 直接对接/var/run/docker.sock无需独立部署 containerd。步骤 3kubeadm‑config.yaml 配置文件k8s1.18 专用 v1beta2⚠️注意k8s1.18 仅支持 apiVersion:kubeadm.k8s.io/v1beta2禁止使用 v1beta3不要写kubeadmVersion字段。yamlapiVersion: kubeadm.k8s.io/v1beta2 kind: InitConfiguration localAPIEndpoint: advertiseAddress: 192.168.1.10 # 修改为你的master静态IP bindPort: 6443 nodeRegistration: criSocket: /var/run/docker.sock name: k8s-master01 --- apiVersion: kubeadm.k8s.io/v1beta2 kind: ClusterConfiguration kubernetesVersion: v1.18.20 imageRepository: registry.aliyuncs.com/google_containers controlPlaneEndpoint: networking: dnsDomain: cluster.local serviceSubnet: 10.96.0.0/12 podSubnet: 10.244.0.0/16步骤 4配置 /etc/hosts修复主机名解析警告bashvi /etc/hosts写入IP 替换为你本机真实静态 IPplaintext192.168.1.10 k8s-master01测试解析是否正常bashping k8s-master01步骤 5清理 kubeadm 旧环境残留初始化前必做bashkubeadm reset -f rm -rf $HOME/.kube rm -rf /etc/cni/net.d/* iptables -F iptables -t nat -F iptables -t mangle -F iptables -X ipvsadm --clear步骤 6执行 kubeadm 初始化bashkubeadm init --configkubeadm-config.yamldocker‑20.10.24 属于 k8s1.18 官方校验版本不再报 SystemVerification 警告无需加忽略参数。步骤 7初始化成功后执行后续操作bash#配置管理员kubeconfig mkdir -p $HOME/.kube cp -i /etc/kubernetes/admin.conf $HOME/.kube/config chown $(id -u):$(id -g) $HOME/.kube/config #部署适配k8s1.18的calico v3.21高版本calico不兼容1.18 kubectl apply -f https://docs.projectcalico.org/v3.21/manifests/calico.yaml #查看节点状态 kubectl get nodes验证检查命令安装完成后执行bashrpm -qa | grep -E docker-ce|containerd.io docker --version ls -l /var/run/docker.sock