
云原生容器编排【免费下载链接】k3dLittle helper to run CNCFs k3s in Docker项目地址https://gitcode.com/gh_mirrors/k3/k3d点击查看免费下载k3d 是围绕 Rancher Labs 的轻量级 Kubernetes 发行版 k3s 构建的 Docker 封装工具它把 k3s 集群的每一个节点都包装成 Docker 容器让你在本机用一条命令就能创建单节点甚至多节点的 Kubernetes 集群非常适合本地开发、CI 流水线与日常验证。读完本文你将掌握 k3d 的安装方式、k3d cluster create核心用法与常用参数、kubeconfig 对接 kubectl 的流程以及其底层容器化原理与配置默认值来源。k3d 是什么k3d 是一个轻量级包装器wrapper用于在 Docker 中运行 k3sRancher 团队维护的极简 Kubernetes 发行版。它让创建单节点与多节点 k3s 集群变得非常简单——例如在本地开发 Kubernetes 应用时你可以在数秒内得到一个可用的集群。从源码看k3d 的命令行根命令这样描述自己cmd/root.gok3d is a wrapper CLI that helps you to easily create k3s clusters inside docker. Nodes of a k3d cluster are docker containers running a k3s image. All Nodes of a k3d cluster are part of the same docker network.关键要点集群节点就是容器k3d 集群中的每个节点都是一个运行 k3s 镜像的 Docker 容器共享网络一个集群的所有节点都属于同一个 Docker 网络入口即负载均衡器默认情况下 k3d 会在 server 节点前创建一个 nginx 负载均衡器容器serverlb作为集群 API 的入口kubectl等客户端连接的就是它。在 pkg/types/types.go 中定义了节点的角色serverk3s 服务端、agentk3s 工作节点、loadbalancernginx 入口、registry内置镜像仓库。cluster create的帮助文本cmd/cluster/clusterCreate.go也明确说明每个集群由 1 个或多个 server 容器、可选 1 个负载均衡器容器、可选 1 个或多个 agent 容器组成。注意k3d 是一个社区驱动的开源项目并非 RancherSUSE的官方产品。环境要求组件说明Dockerk3d 完全依赖 Docker 运行必须预先安装。k3d v5.x.x 至少需要Docker v20.10.5runc v1.0.0-rc93才能正常工作kubectl用于与 Kubernetes 集群交互创建集群后通过它执行kubectl get nodes等操作安装 k3d官方提供多种安装途径按需选择即可。方式一安装脚本推荐install.sh位于仓库根目录 install.sh支持通过TAG环境变量指定版本# 安装最新 releasewget wget -q -O - https://raw.githubusercontent.com/k3d-io/k3d/main/install.sh | bash # 安装最新 releasecurl curl -s https://raw.githubusercontent.com/k3d-io/k3d/main/install.sh | bash # 安装指定版本例如 v5.0.0wget wget -q -O - https://raw.githubusercontent.com/k3d-io/k3d/main/install.sh | TAGv5.0.0 bash # 安装指定版本curl curl -s https://raw.githubusercontent.com/k3d-io/k3d/main/install.sh | TAGv5.0.0 bash从 install.sh 的源码可以看出该脚本的健壮性设计自动识别平台initArch/initOS将uname输出映射为linux-amd64、darwin-arm64等二进制命名支持 Windowsmingw环境强制 HTTPS 与 TLS 1.2scurl使用--proto https --tlsv1.2 --fail --show-error保证下载安全SHA256 校验verifyChecksum会比对checksums.txt中的期望值与实际哈希校验失败即中止安装默认安装路径/usr/local/bin可用--no-sudo参数免 sudo 安装也可通过环境变量K3D_INSTALL_DIR自定义目录。方式二系统包管理器平台命令macOS / LinuxHomebrewbrew install k3dArch LinuxAURyay -S rancher-k3d-binWindowsChocolateychoco install k3dWindowsScoopscoop install k3d通用arkadearkade get k3d通用asdfasdf plugin-add k3d asdf install k3d latest方式三Go 安装或源码构建# 通过 Go 安装注意得到的是未发布/最新的开发版本 go install github.com/k3d-io/k3d/v5latest如需从源码构建可git clone本仓库后在根目录执行make install-tools # 安装所需的 Go 依赖 make build # 为当前系统构建 make build-cross # 交叉构建所有平台快速开始30 秒创建一个单节点集群创建名为mycluster的集群默认只含一个 server 节点外加一个负载均衡器容器k3d cluster create mycluster创建完成后即可使用 kubectl 访问集群kubectl get nodes集群创建成功后k3d 会自动把新集群的连接信息合并进你的默认 kubeconfig通常是$HOME/.kube/config并直接切换到新 context。如果因某种原因没有切换可以手动合并并切换k3d kubeconfig merge mycluster --kubeconfig-switch-context之后就能正常执行kubectl cluster-info、kubectl get pods --all-namespaces等操作。完整生命周期示例一个典型的 k3d 工作流与 README.md 描述一致# 1. 创建单节点集群 k3d cluster create mycluster # 2.默认已随创建完成合并 kubeconfig 并切换 context k3d kubeconfig merge mycluster --kubeconfig-switch-context # 3. 与集群交互 kubectl get pods --all-namespaces # 4. 删除集群 k3d cluster delete mycluster创建集群时的常用参数源码级解读k3d cluster create是 k3d 最核心的命令其全部标志定义在 cmd/cluster/clusterCreate.go。以下参数默认值均以当前仓库源码为准。节点数量与镜像参数默认值说明--servers, -s1创建多少个 server 节点多 server 即 HA 集群--agents, -a0创建多少个 agent工作节点--image, -idocker.io/rancher/k3s:默认k3s版本指定节点使用的 k3s 镜像k3s 默认镜像仓库定义在 pkg/types/images.go为docker.io/rancher/k3s默认 k3s 版本在 version/version.go 中硬编码可用k3d version查看当前 k3d 版本与默认 k3s 版本。示例创建 3 server 2 agent 的多节点集群k3d cluster create mycluster --servers 3 --agents 2API 端口与端口映射参数说明--api-port [HOST:]HOSTPORT指定暴露在负载均衡器上的 Kubernetes API 端口例如k3d cluster create --servers 3 --api-port 0.0.0.0:6550。若留空源码会自动探测一个空闲端口见applyCLIOverrides中的GetFreePort逻辑--port, -p [HOST:][HOSTPORT:]CONTAINERPORT[/PROTOCOL][NODEFILTER]将节点容器端口通过 serverlb 映射到宿主机例如k3d cluster create --agents 2 -p 8080:80agent:0 -p 8081agent:1--no-lb禁用 server 节点前的负载均衡器默认 API 端口常量6443定义在 pkg/types/defaults.go。网络、存储与环境变量参数说明--network加入已存在的 Docker 网络--subnet实验性IPAM为新创建的容器网络指定子网例如172.28.0.0/16--volume, -v [SOURCE:]DEST[NODEFILTER...]向节点挂载卷例如-v /my/pathagent:0,1--env, -e KEY[VALUE][NODEFILTER...]向节点注入环境变量例如-e HTTP_PROXYmy.proxy.comserver:0--host-alias ip:host[,host...]向节点/etc/hosts添加 IP 与主机名映射k3s 行为定制参数说明--k3s-arg ARGNODEFILTER向 k3s 传递额外参数例如--k3s-arg --disabletraefikserver:0可禁用 Traefik--k3s-node-label KEY[VALUE][NODEFILTER]给 k3s 节点打 label--token指定集群 token默认自动生成--wait返回前等待 server 就绪默认true配合--timeout避免无限等待--timeout超时未创建成功则回滚所有变更--no-rollback失败时禁用自动回滚运行时与镜像仓库参数说明--gpus添加 GPU 设备all表示传递全部 GPU--servers-memory/--agents-memory对 server / agent 容器施加内存限制--host-pid-mode启用宿主机 PID 模式--registry-create NAME[:HOST][:HOSTPORT]创建 k3d 管理的本地镜像仓库并接入集群例如--registry-create mycluster-registry:0.0.0.0:5432--registry-use连接一个或多个本地运行的 k3d 管理仓库--registry-config指定额外的registries.yaml文件路径节点过滤器NODEFILTER上述许多标志都支持NODEFILTER语法用于把配置精确应用到特定节点例如server:0表示第一个 server 节点agent:0,1表示前两个 agent 节点多组过滤条件用分号分隔。这是 k3d 灵活性的核心设计之一同一批节点可以拥有不同的端口、卷、环境变量与 k3s 参数。底层原理创建集群时发生了什么从源码看一次k3d cluster create的完整链路是pkg/client/cluster.go 的ClusterRun函数配置装配CLI 标志经applyCLIOverrides处理后与配置文件合并成最终配置cmd/cluster/clusterCreate.go随后经过ProcessSimpleConfig、TransformSimpleToClusterConfig、ValidateClusterConfig等校验与转换阶段基础设施准备ClusterPrep创建专属 Docker 网络创建容器ClusterCreate依次创建 server、agent、负载均衡器容器同时异步EnsureToolsNode保证存在一个 k3d-tools 辅助容器用于后续镜像导入等操作启动与等待ClusterStart启动全部容器并等待 server 就绪--waitkubeconfig 写入若开启--kubeconfig-update-default默认开启调用KubeconfigGetWrite把新集群 context 合并进默认 kubeconfig 并切换当前 contextcmd/cluster/clusterCreate.go失败回滚任一步失败都会自动执行ClusterDelete回滚除非指定--no-rollback。几个值得记住的默认值pkg/types/defaults.go默认集群名k3s-default不指定 NAME 时对象前缀k3d因此容器名形如k3d-mycluster-server-0集群名最大长度32 字符保证拼接前缀和后缀后不超出 Docker 的 64 字符限制。集群日常管理创建之后你还可以用以下命令管理集群k3d cluster list # 列出所有集群 k3d cluster start mycluster # 启动已停止的集群 k3d cluster stop mycluster # 停止集群保留容器 k3d cluster delete mycluster # 删除集群含容器、网络等 k3d node list # 查看集群节点 k3d registry list # 查看 k3d 管理的镜像仓库这些命令的实现分别位于 cmd/cluster、cmd/node、cmd/registry 目录下。进阶阅读路径本仓库的文档站点还提供了丰富的进阶指南建议按需查阅集群配置文件详解用 YAML 配置文件声明集群拓扑、端口、卷、镜像仓库等实现可复现的集群定义多 server 集群HA深入理解 serverlb 与多 server 高可用架构镜像导入把本地镜像导入 k3d 集群依赖 k3d-tools 容器与镜像卷私有镜像仓库配置包括--registry-create与registries.yaml的完整用法kubeconfig 管理k3d kubeconfig子命令的详细说明k3s 相关配置如何通过--k3s-arg定制 k3s 行为。生态相关项目均在仓库外维护包括VSCode 扩展 vscode-k3d、Linux 图形前端 k3x、用于 GitHub Actions 的 AbsaOSS/k3d-action 与 nolar/setup-k3d-k3s以及支持 k3d provider 的 AutoK3s。小结k3d 的价值在于把在 Docker 里跑一个多节点 Kubernetes 集群从繁琐的手工操作压缩为一条命令。本文覆盖了其概念、安装、快速上手与常用参数并结合仓库源码说明了默认值与底层流程。接下来建议你立刻执行k3d cluster create体验一次完整生命周期再配合配置文件指南把集群定义固化为可复用的 YAML即可把 k3d 顺畅地纳入日常开发与 CI 流程。赞分享云原生容器编排【免费下载链接】k3dLittle helper to run CNCFs k3s in Docker项目地址https://gitcode.com/gh_mirrors/k3/k3d点击查看免费下载相关推荐Vuetify 文档搜索接入浏览器搜索引擎指南从地址栏一键直达官方文档Vuetify 文档搜索接入浏览器搜索引擎指南从地址栏一键直达官方文档 导读 本文以 Vuetify 官方文档仓库中的 packages/docs/src/p云原生容器编排k3d node delete 完全指南在 Docker 中精准删除 k3s 集群节点k3d node delete 完全指南在 Docker 中精准删除 k3s 集群节点 本篇技术指南围绕 k3d 的 k3d node delete 命令展开云原生容器编排GameDevMind 运营安全实战游戏服务器的 DDoS 防护、DNS 劫持应对、暴力破解加固与高防服务选型GameDevMind 运营安全实战游戏服务器的 DDoS 防护、DNS 劫持应对、暴力破解加固与高防服务选型 本文为 GameDevMind 游戏开发技术图云原生容器编排上一篇EasyPhoto云部署终极指南阿里云DSW、AutoDL、Docker全攻略下一篇Alda乐器大全128种MIDI音色完整指南与使用技巧创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考