You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Kind在EC2 Ubuntu实例创建K8s集群时遇kubeadm初始化失败及Docker错误

解决Kind创建K8s 1.21集群时的kubeadm初始化失败及Docker问题

第一步:检查并修复Docker环境

Kubernetes 1.21对Docker版本有明确兼容要求,需使用Docker 20.10.x系列(兼容范围为19.03.13+至20.10.x),先确认当前版本:

docker --version

若版本不符合,卸载旧版本后安装指定版本:

# 卸载现有Docker组件
sudo apt-get purge docker-ce docker-ce-cli containerd.io
# 安装依赖包
sudo apt-get update && sudo apt-get install -y apt-transport-https ca-certificates curl gnupg lsb-release
# 添加Docker官方GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 配置Docker稳定源
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 安装兼容K8s 1.21的Docker版本
sudo apt-get update && sudo apt-get install -y docker-ce=5:20.10.24~3-0~ubuntu-$(lsb_release -cs) docker-ce-cli=5:20.10.24~3-0~ubuntu-$(lsb_release -cs) containerd.io

接下来配置Docker的cgroup驱动为systemd(与Kubeadm默认驱动一致,避免初始化冲突):

sudo mkdir -p /etc/docker
cat <<EOF | sudo tee /etc/docker/daemon.json
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}
EOF
# 重启Docker服务使配置生效
sudo systemctl daemon-reload
sudo systemctl restart docker
# 验证cgroup驱动配置
docker info | grep -i cgroup

输出需显示Cgroup Driver: systemd。

第二步:配置Docker用户权限

避免每次执行Docker/Kind命令都使用sudo:

sudo usermod -aG docker $USER
# 无需重新登录,执行以下命令立即生效权限
newgrp docker

第三步:安装兼容K8s 1.21的Kind版本

Kind版本需与K8s版本匹配,针对K8s 1.21,推荐使用Kind v0.11.x系列(v0.12+版本对旧K8s版本支持有限):

# 下载Kind v0.11.1二进制文件
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.11.1/kind-linux-amd64
# 赋予执行权限
chmod +x ./kind
# 移动到系统PATH目录
sudo mv ./kind /usr/local/bin/
# 验证Kind版本
kind --version

第四步:创建K8s 1.21集群

方式1:命令行直接创建

使用官方兼容的镜像创建集群,确保版本匹配:

kind create cluster --name my-cluster --image kindest/node:v1.21.14@sha256:8a4e9bb3f415d2bb81629ce33ef9c76ba514c14d707f9797a01e3216376ba093

方式2:使用Kind配置文件(自定义集群参数)

创建kind-config.yaml文件:

kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
  image: kindest/node:v1.21.14@sha256:8a4e9bb3f415d2bb81629ce33ef9c76ba514c14d707f9797a01e3216376ba093
  kubeadmConfigPatches:
  - |
    kind: InitConfiguration
    nodeRegistration:
      kubeletExtraArgs:
        cgroup-driver: systemd

执行创建命令:

kind create cluster --name my-cluster --config kind-config.yaml

第五步:验证集群状态

创建完成后检查节点和组件状态:

# 获取集群节点信息
kubectl get nodes --context kind-my-cluster
# 检查K8s核心组件状态
kubectl get componentstatuses

若仍出现kubeadm初始化错误,导出日志定位问题:

# 导出Kind集群日志到本地目录
kind export logs --name my-cluster ./kind-logs
# 查看kubeadm初始化详细日志
cat ./kind-logs/control-plane/kubeadm-init.log

内容的提问来源于stack exchange,提问作者rishabh dixit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 16:06:28