解决方案:降级 Docker 到兼容版本
1. 卸载当前 Docker
bash
yum remove -y docker-ce docker-ce-cli containerd.io
2. 安装 Docker 19.03(Kubernetes v1.17 验证版本)
bash
# 添加Docker仓库yum install -y yum-utils yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo# 锁定版本并安装yum install -y docker-ce-19.03.15 docker-ce-cli-19.03.15 containerd.io# 启动并设置开机自启systemctl start dockersystemctl enable docker
3. 配置 Docker 使用 systemd cgroup 驱动
bash
cat > /etc/docker/daemon.json << EOF { "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2" } EOF# 重启Docker使配置生效systemctl restart docker
三、重新配置并初始化 Kubernetes
1. 清理残留环境
bash
# 停止服务systemctl stop kubelet docker# 重置kubeadmkubeadm reset -f# 删除残留文件rm -rf /etc/kubernetes/*rm -rf $HOME/.kuberm -rf /var/lib/etcdrm -rf /var/lib/kubeletrm -rf /var/lib/cni
2. 创建兼容的配置文件
bash
cat > kubeadm-config.yaml << EOF apiVersion: kubeadm.k8s.io/v1beta2 bootstrapTokens: - groups: - system:bootstrappers:kubeadm:default-node-token token: abcdef.0123456789abcdef ttl: 24h0m0s usages: - signing - authentication kind: InitConfiguration localAPIEndpoint: advertiseAddress: 192.168.100.100 bindPort: 6443 nodeRegistration: criSocket: unix:///var/run/dockershim.sock # 注意:Docker 19.03使用dockershim name: shihb-k8s-master01 taints: [] --- apiVersion: kubeadm.k8s.io/v1beta2 kind: ClusterConfiguration kubernetesVersion: v1.17.4 networking: dnsDomain: cluster.local podSubnet: 10.224.0.0/16 serviceSubnet: 10.96.0.0/12 imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers apiServer: timeoutForControlPlane: 4m0s extraArgs: authorization-mode: Node,RBAC certificatesDir: /etc/kubernetes/pki controllerManager: extraArgs: node-cidr-mask-size: "24" etcd: local: dataDir: /var/lib/etcd --- apiVersion: kubelet.config.k8s.io/v1beta1 kind: KubeletConfiguration cgroupDriver: systemd authentication: anonymous: enabled: false webhook: enabled: true x509: clientCAFile: /etc/kubernetes/pki/ca.crt authorization: mode: Webhook clusterDomain: cluster.local clusterDNS: - 10.96.0.10 resolvConf: /etc/resolv.conf runtimeRequestTimeout: 10m0s EOF
3. 重新执行初始化
bash
kubeadm init --config=kubeadm-config.yaml --upload-certs