kubespray-offline-infra 是一个面向 Kubernetes 离线(air-gap)部署的技能文档,主要解决在隔离网络中部署集群前,需要先在管理服务器上准备基础网络服务的问题。它强调管理服务器作为中心枢纽,为内网节点提供名称解析、时间同步、软件包安装和容器镜像拉取等能力。
用途与适用场景:当需要在隔离网络中搭建 bind DNS 解析、配置 chrony 时间同步、创建用于受控或临时联网的 NAT 网关、通过 reposync 构建本地 YUM/DNF 软件源、搭建 PyPI 镜像(devpi 或 pypi-mirror),以及在运行 kubespray-offline 前准备管理服务器时,可参考该技能。
网络架构:文档给出 Internet 与管理服务器(如 192.168.10.10)再到内网(如 192.168.10.0/24)的拓扑,管理服务器通常有两块网卡,一块对外联网(如 enp0s8),一块面向内网(如 enp0s9),所有 k8s 节点通过管理服务器路由。
主要能力与使用方式:
- NAT 网关:开启 net.ipv4.ip_forward,并在外网接口配置 iptables MASQUERADE;节点侧关闭外网网卡、经内网接口添加指向管理服务器的默认路由,并给出连通性验证命令;测试隔离时可删除 NAT 规则。
- DNS(bind):安装 bind 与 bind-utils,在 /etc/named.conf 中设置监听、允许查询/递归网段、forwarders 等,启动 named,并让管理服务器与节点将 /etc/resolv.conf 指向管理服务器;节点上需通过 NetworkManager 配置禁用 DNS 管理,避免覆盖 resolv.conf。
- NTP(chrony):管理服务器配置上游时间源、allow 内网网段与 local stratum,节点指向管理服务器,并提供 chronyc sources、timedatectl 等验证方式。
- 本地 YUM/DNF 仓库:使用 dnf reposync 下载 baseos、appstream、extras 等仓库(文档给出大致体积与耗时),用 nginx 提供 HTTP 访问,节点侧备份原有 repo 文件并写入指向内网镜像的 repo 配置,再执行 dnf clean all、repolist、makecache。
- 私有 PyPI 镜像:给出两种方案——devpi-server(支持缓存与上传,需注意 /+simple/ 后缀)和 pypi-mirror(静态镜像,kubespray-offline 采用的方式),并提供 /etc/pip.conf 的客户端配置示例。
文档还包含服务与端口速查表(DNS 53、NTP 123、YUM/DNF 80、PyPI 3141 或 80 等)、验证命令,以及常见错误(如 SELinux 阻止 bind、NetworkManager 覆盖 DNS、chrony 缺少 allow 网段、未运行 createrepo、pip 索引地址格式问题),并建议按 NAT、DNS、NTP、YUM/DNF、PyPI、最后关闭 NAT 的顺序搭建。具体版本、环境差异与耗时数据以原文示例为准,未提及的发行版或平台细节暂未提供。