
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
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
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务