尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Kubespray 如何配置 download_run_once 一次拉取分发模式集中下载二进制与容器镜像?
Kubespray 如何配置 download_run_once 一次拉取分发模式集中下载二进制与容器镜像【免费下载链接】kubesprayDeploy a Production Ready Kubernetes Cluster项目地址: https://gitcode.com/GitHub_Trending/ku/kubespray用 Kubespray 部署集群时默认行为是每个节点各自从上游下载二进制文件和容器镜像即download_run_once: false节点多或外网带宽受限时重复下载会拖慢整体部署。Kubespray 提供了“一次拉取、多次分发”pull once, push many模式只要把download_run_once设为true所有二进制和容器镜像只在一个委托节点delegate上下载一次再由 Ansible 控制端缓存并分发到所有集群节点。本文说明如何开启这一模式、执行部署以及验证缓存与分发结果。配置依据见 docs/advanced/downloads.md变量定义在 roles/kubespray_defaults/defaults/main/download.yml。默认模式与 download_run_once 模式的差异项目默认download_run_once: falsedownload_run_once: true下载位置每个节点自己下载只在 delegate 节点下载一次delegate 节点不适用默认是kube_control_plane组的第一个节点设置download_localhost: true时可改为 Ansible 控制端本地缓存默认不建立所有文件缓存到 Ansible 控制端的download_cache_dir默认/tmp/kubespray_cache后续 provisioning 直接复用两个要点需要记住均来自 docs/advanced/downloads.md 的 NOTE 说明当download_run_once: true且download_localhost: false时所有下载都发生在 delegate 节点上包括那些节点本身不需要的镜像因此 delegate 节点容器运行时存储占用的空间会比默认模式大。即使用户没有开启download_localhost文件仍会先从 delegate 节点拷回 Ansible 控制端本地主机再由 Ansible 控制端分发到所有集群节点——控制端是分发链路的必经中转。准备条件Ansible 环境按 docs/ansible/ansible.md 的要求在 Python 虚拟环境中安装 Kubespray 支持的 Ansible 版本文档给出的环境python3 -m venv后pip install -r requirements.txt。inventory 中必须存在kube_control_plane组validate_inventory角色会断言该组非空且download_delegate默认取groups[kube_control_plane][0]见 roles/kubespray_defaults/defaults/main/download.yml 第 53 行的download_delegate定义。delegate 节点需能访问外部下载地址GitHub、dl.k8s.io 等完整 URL 列表在 download.yml 的 “Download URLs” 段。如果集群节点不能访问外网、只有 Ansible 控制端可以则改用download_localhost: true此时 Ansible 控制端要求容器运行时container runtime已安装并运行当前用户在 docker 组中或可以做免密 sudo。Kubespray 会在准备阶段实际执行检查roles/download/tasks/prep_download.yml若两者都不满足会以断言失败终止Error: User is not in docker group and cannot become root. When download_localhost is true, at least one of these two conditions must be met.Flatcar 限制默认模式在 Flatcar Container Linux 节点上不可用除非download_localhost: true且 localhost 运行的是另一种操作系统download.yml 中download_run_once的注释以及 docs/advanced/downloads.md。preinstall 阶段的检查roles/kubernetes/preinstall/tasks/0040-verify-settings.yml在download_run_once或download_force_cache开启时也会直接断言主机不是 Flatcar报download_run_once not supported for Flatcar Container Linux。配置 download_run_once变量可以通过 inventory 的group_vars或命令行 extra vars 覆盖docs/ansible/ansible.md “Customize Ansible vars” 一节。方式一写入 inventory 的group_vars/all# group_vars/all download_run_once: true # 可选集群节点无法访问外网时把 Ansible 控制端作为下载节点 # download_localhost: true # 可选自定义缓存目录默认 /tmp/kubespray_cache # download_cache_dir: /tmp/kubespray_cache方式二命令行传递。注意validate_inventory角色会断言download_run_once必须是布尔类型断言提示要求 CLI 使用 JSON 格式roles/validate_inventory/tasks/main.ymlansible-playbook -i /inventory/inventory.ini cluster.yml \ -e {download_run_once: true}上面命令格式与 README.md 中的部署命令一致ansible-playbook -i /inventory/inventory.ini --private-key /root/.ssh/id_rsa cluster.yml请将 inventory 路径、--private-key路径替换为你自己的实际路径-e的值必须保留 JSON 格式写成字符串true会触发断言失败。相关变量及默认值来自 download.yml变量默认值用途download_run_oncefalse开启一次下载、多节点分发download_localhostfalse用 Ansible 控制端做下载节点要求同时download_run_once: true否则被 validate_inventory 断言拦截download_localhost requires enable download_run_oncedownload_delegate自动计算localhost当download_localhost为真或第一个kube_control_plane实际执行下载的主机download_cache_dir/tmp/kubespray_cacheAnsible 控制端上的文件/镜像缓存目录local_release_dir/tmp/releases节点上暂存下载文件与镜像的目录download_retries4文件/镜像下载与推送失败时的重试次数download_compress1docker save 导出镜像时的 gzip 压缩等级默认 1 为最快执行部署配置完成后按常规方式运行部署命令格式见 README.mdansible-playbook -i /inventory/inventory.ini --private-key /root/.ssh/id_rsa cluster.yml下载阶段对应 download 角色roles/download/tasks/main.yml其中的任务条件决定了行为download_run_once为真时文件与镜像下载只在inventory_hostname download_delegate的那台主机上执行其余节点直接从缓存取文件镜像按以下链路流转roles/download/tasks/download_container.yml在 delegate 节点执行pullcontainerd 用 nerdctl、crio 用 crictl/skopeo、docker 用 docker具体命令由image_pull_command等变量按container_manager选定导出并压缩镜像为 tar 文件拷回 Ansible 控制端的download_cache_dir/images推送到各节点local_release_dir/images执行 load 导入节点容器运行时导入后删除节点上的镜像缓存文件除非设置了download_keep_remote_cache: true为节点省出磁盘空间。对于大规模部署docs/operations/large-deployments.md 建议同时调整 delegate 重试压力设置全局变量retry_stagger该文档的 200 节点示例中为retry_stagger: 60并配合--forks50、--timeout600避免大量节点同时向 delegate 请求推送/下载。这属于可选分支小集群可忽略。验证结果文档给出的可核对预期数值均来自 docs/advanced/downloads.md 的 Caching 一节为文档示例容量不是固定阈值Ansible 控制端缓存当download_run_once: true时所有下载文件都会缓存到download_cache_dir默认/tmp/kubespray_cache首次部署后该目录会占用约 800MB 磁盘空间。再次运行 provisioning 时直接使用该缓存减少带宽消耗并缩短部署时间。节点镜像占用节点上镜像缓存磁盘占用以最大单镜像为上限文档给出的当前值略小于 150MB若设置download_keep_remote_cache: true节点上的镜像文件不会被删除占用会上升到约 550MB当前所有必需容器镜像的合计大小。下载任务归属由于download角色的下载任务带download/upload标签且条件限定inventory_hostname download_delegate执行日志中拉取动作只应出现在 delegate 节点其余节点执行的是从缓存复制synchronize push与 load。如果希望已有完整缓存镜像和文件齐全、无需再下载时复用缓存而非重新拉取可在默认模式download_run_once: false下设置download_force_cache: true——文档说明这是为“已有全量缓存、只需使用缓存”的场景准备的开关。限制与注意事项delegate 节点存储更大download_run_once: true且download_localhost: false时delegate 节点会缓存本节点不需要的镜像存储占用高于默认模式docs/advanced/downloads.md NOTE。Flatcar 不支持见上文准备条件第 4 条的断言行为。download_localhost依赖前提Ansible 控制端容器运行时可用 用户在 docker 组或可免密 sudo且必须同时开启download_run_once。远程缓存清理是默认行为为节点分发完成后会删除节点上的镜像缓存文件roles/download/tasks/download_container.yml 的 “Remove container image from cache” 任务只有开发调试 Kubespray 时才有理由设download_keep_remote_cache: true代价是节点占用升至约 550MB。代理与证书经 HTTPS 代理下载遇到 ansible 已知问题时可设download_validate_certs: false关闭get_url的 SSL 校验Kubespray 仍会做 checksum 校验见 download.yml 注释内网场景还可通过各*_image_repo变量把镜像指向内网 registrydocs/operations/large-deployments.md 亦建议此做法。完成上述配置后下一次及后续 provisioning 都会走“delegate 下载 → 控制端缓存 → 分发到节点”的路径需要调整缓存位置或保留远程缓存时直接修改download_cache_dir、download_keep_remote_cache两个变量即可其余部署流程不变。【免费下载链接】kubesprayDeploy a Production Ready Kubernetes Cluster项目地址: https://gitcode.com/GitHub_Trending/ku/kubespray创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

FastAPI WebSocket 测试:TestClient 会话式断言的三个关键写法

FastAPI WebSocket 测试:TestClient 会话式断言的三个关键写法

FastAPI WebSocket 测试:TestClient 会话式断言的三个关键写法 【免费下载链接】fastapi FastAPI framework, high performance, easy to learn, fast to code, ready for production 项目地址: https://gitcode.com/GitHub_Trending/fa/fastapi 给 FastAPI …

📅 2026/9/14 18:43:19
uni-app scroll-view触顶事件失效解决方案

uni-app scroll-view触顶事件失效解决方案

1. 问题背景与现象分析在uni-app开发中,scroll-view组件是实现区域滚动的常用方案,特别是在聊天记录、商品列表等需要上拉加载更多数据的场景下。但实际开发中会遇到一个典型问题:当用户快速滑动scroll-view时,scrolltoupper&…

📅 2026/9/14 18:43:19
Wagtail 6.0.2 发布说明深度解析:Chooser 模态框、ModelViewSet 与 TableBlock 的 8 项关键修复

Wagtail 6.0.2 发布说明深度解析:Chooser 模态框、ModelViewSet 与 TableBlock 的 8 项关键修复

Wagtail 6.0.2 发布说明深度解析:Chooser 模态框、ModelViewSet 与 TableBlock 的 8 项关键修复 【免费下载链接】wagtail A Django content management system focused on flexibility and user experience 项目地址: https://gitcode.com/GitHub_Trending/wa/wa…

📅 2026/9/14 18:38:18
MORE NEWS

更多资讯

📰

Renovate postUpgradeTasks 怎么配置并在自托管环境允许执行

Renovate postUpgradeTasks 怎么配置并在自托管环境允许执行 【免费下载链接】renovate Home of the Renovate CLI: Cross-platform Dependency Automation by Mend.io 项目地址: https://gitcode.com/GitHub_Trending/re/renovate postUpgradeTasks 是 Renovate 仓库级…

📰

OpenMetadata Playwright E2E 文档生成器:架构、指标与自动化实战

OpenMetadata Playwright E2E 文档生成器:架构、指标与自动化实战 【免费下载链接】OpenMetadata The Open Context Layer for Data and AI , OpenMetadata is the open platform for building trusted data context and business semantics for humans, AI assista…

📰

LifeOS 中的 AgentRace 工作流:在 cmux 竞技场中用多 Agent 并行竞赛定位并修复疑难 Bug

LifeOS 中的 AgentRace 工作流:在 cmux 竞技场中用多 Agent 并行竞赛定位并修复疑难 Bug 【免费下载链接】LifeOS ⛰️ The Life Operating System — an intent engineering platform that moves you from your current state to your ideal state, in life and wo…

📰

TanStack Router RootRoute 类深度解析:代码优先路由树的根节点与 createRootRoute 替代方案

TanStack Router RootRoute 类深度解析:代码优先路由树的根节点与 createRootRoute 替代方案 【免费下载链接】router 🤖 A client-first, server-capable, fully type-safe router and full-stack framework for the web (React and more). 项目地址:…

📰

Umi (@umi/max) 微前端实战:Qiankun 插件从主子应用配置到通信、生命周期与错误处理的完整指南

Umi (umi/max) 微前端实战:Qiankun 插件从主子应用配置到通信、生命周期与错误处理的完整指南 【免费下载链接】umi A framework in react community ✨ 项目地址: https://gitcode.com/GitHub_Trending/um/umi Umi 官方解决方案 umi/max 内置了 Qiankun 微前…

📰

Reqwest:Rust HTTP 客户端快速上手,把请求、解析、错误处理压进一个调用

Reqwest:Rust HTTP 客户端快速上手,把请求、解析、错误处理压进一个调用 【免费下载链接】reqwest An easy and powerful Rust HTTP Client 项目地址: https://gitcode.com/GitHub_Trending/re/reqwest 每写一次请求都要手动建连接、拼请求头、解…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬