
kubeadm-dind-cluster是一个基于kubeadm和DIND(Docker in Docker)的Kubernetes多节点集群解决方案,主要面向Kubernetes开发者及扩展Kubernetes的项目。它支持本地开发工作流和利用远程高性能机器/云实例构建Kubernetes、启动测试集群及运行e2e测试。与Minikube相比,它更适合Kubernetes本身的开发,尤其在CI环境(如Travis)中可避免嵌套虚拟化问题。
kubectl版本需与使用的Kubernetes版本匹配(如使用hyperkube 1.9.x时,建议使用kubectl 1.9.x)RUN_ON_BTRFS_ANYWAY环境变量强制运行,但不推荐)KUBEADM_DIND_LOCAL变量启用本地构建)md5sha1sum(可通过brew install md5sha1sum获取)kubectl(make WHAT=cmd/kubectl可正常运行)针对Kubernetes 1.8、1.9和1.10版本提供预配置脚本,适合快速启动特定版本集群:
shell# 下载对应版本脚本(以1.8为例,可替换为1.9或1.10) $ wget https://cdn.rawgit.com/Mirantis/kubeadm-dind-cluster/master/fixed/dind-cluster-v1.8.sh $ chmod +x dind-cluster-v1.8.sh # 启动集群 $ ./dind-cluster-v1.8.sh up # 将kubectl添加到PATH $ export PATH="$HOME/.kubeadm-dind-cluster:$PATH" # 验证集群状态 $ kubectl get nodes NAME STATUS AGE VERSION kube-master Ready 6m v1.8.6 kube-node-1 Ready 5m v1.8.6 kube-node-2 Ready 5m v1.8.6 # Kubernetes Dashboard地址:http://localhost:8080/api/v1/namespaces/kube-system/services/kubernetes-dashboard:/proxy # 重启集群(比首次启动快) $ ./dind-cluster-v1.8.sh up # 停止集群 $ ./dind-cluster-v1.8.sh down # 清理DIND容器和卷(切换Kubernetes版本时必须执行) $ ./dind-cluster-v1.8.sh clean
适用于需要从源码构建并测试Kubernetes的场景:
shell# 克隆kubeadm-dind-cluster仓库 $ git clone git@github.com:Mirantis/kubeadm-dind-cluster.git ~/dind # 进入Kubernetes源码目录 $ cd ~/work/kubernetes/src/k8s.io/kubernetes # 设置环境变量以构建kubeadm和hyperkube $ export BUILD_KUBEADM=y $ export BUILD_HYPERKUBE=y # 构建二进制文件、镜像并启动集群 $ ~/dind/dind-cluster.sh up # 验证集群状态 $ kubectl get nodes NAME STATUS AGE kube-master Ready,master 1m kube-node-1 Ready 34s kube-node-2 Ready 34s # Kubernetes Dashboard地址:http://localhost:8080/ui # 运行conformance测试 $ ~/dind/dind-cluster.sh e2e # 重建并重启集群 $ ~/dind/dind-cluster.sh up # 运行特定e2e测试(基于子字符串匹配) $ ~/dind/dind-cluster.sh e2e "existing RC" # 关闭集群 $ ~/dind/dind-cluster.sh down
首次启动因需构建基础镜像和Kubernetes二进制文件可能较慢,后续启动速度显著提升。
通过设置IP_MODE环境变量启用IPv6-only模式,可自定义DNS64前缀、DIND子网和服务CIDR等参数:
shellexport IP_MODE=ipv6 export EMBBEDDED_CONFIG=y export DNS64_PREFIX=fd00:77:64:ff9b:: export DIND_SUBNET=fd00:77:: export SERVICE_CIDR=fd00:77:30::/110
注意:如需完整IPv6支持,可能需要 cherry-pick 两个Kubernetes PR:
可通过编辑config.sh文件覆盖默认设置,关键配置项包括:
CNI_PLUGIN:指定CNI插件(可选值:bridge、flannel、calico、weave)config.sh文件注释)支持在远程Docker环境(如GCE实例)上构建和运行集群,需配合ssh端口转发:
shell# 加载GCE环境配置(保留docker-machine shell环境) . gce-setup.sh
需转发KUBE_RSYNC_PORT和APISERVER_PORT端口,具体配置参考Kubernetes源码中build/README.md的"Really remote Docker engine"部分。
支持将集群状态导出为文本或压缩格式,便于CI环境中的问题诊断:
./dind-cluster.sh dump:导出集群状态为带标记的文本块./dind-cluster.sh dump64:导出集群状态为base64压缩文本块./dind-cluster.sh split-dump:将文本块分割为文件(输出至cluster-dump/目录)./dind-cluster.sh split-dump64:将base64压缩文本块分割为文件示例:从Travis CI日志中提取并解析集群状态:
shelltravis logs NNN.N | ./dind-cluster.sh split-dump64
转储内容包括:节点系统服务状态与日志、进程/容器/网络信息、Pod容器日志、kubectl资源信息等。
[Conformance] e2e测试可正常通过[Serial]...[Conformance]测试存在部分问题,可尝试运行:
shell$ dind/dind-cluster.sh e2e-serial
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。



探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
不支持 push
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务