2. 环境准备:Kubernetes集群版本选择、节点规格要求

在进行镜像拉取速度对比的容量规划测试前,必须搭建一个稳定、可复现的Kubernetes环境。集群版本、节点规格与网络带宽的差异会直接影响测试结果的准确性与可迁移性。本节将明确测试环境的选型标准与配置基线。

2.1 Kubernetes版本选择

推荐使用Kubernetes v1.28.x作为测试基准版本。该版本处于稳定支持窗口内,且对容器运行时接口(CRI)与镜像拉取机制无重大变更,能够保证测试结果在后续版本中的参考价值。

版本 状态 选择理由
v1.27.x 已结束支持 不推荐,缺少安全更新
v1.28.x 推荐 稳定支持、CRI无破坏性变更、社区广泛验证
v1.29.x 最新稳定 可选,但需验证CRI兼容性
v1.30+ 预览/早期 不推荐,稳定性未充分验证
版本锁定建议: 测试期间应锁定集群版本,避免中途升级导致kubelet与CRI交互行为变化,影响镜像拉取速度的横向对比。

2.2 节点规格要求

测试集群至少需要3个Worker节点与1个Control Plane节点。所有节点应使用同一规格,避免因硬件差异引入干扰变量。以下为最低推荐配置与最佳实践配置。

资源维度 最低配置 推荐配置 说明
CPU 2 vCPU 4 vCPU 镜像拉取涉及解压与磁盘I/O,多核可减少CPU瓶颈
内存 4 GB 8 GB 容器运行时与kubelet缓存需要足够内存
系统盘 40 GB SSD 100 GB NVMe 镜像层存储与解压临时空间,SSD显著提升拉取速度
网络带宽 1 Gbps 10 Gbps 镜像仓库与节点间传输速度的直接瓶颈
关键约束: 所有Worker节点必须使用相同规格的CPU、内存、磁盘与网络。若节点间带宽不对称,测试结果将无法归因于镜像拉取机制本身。

2.3 网络带宽与镜像仓库部署策略

网络带宽是镜像拉取速度测试中最敏感的变量。为消除公网波动影响,建议在集群内部署本地Harbor镜像仓库,并与Worker节点处于同一二层网络或同可用区。

网络拓扑要点:
  • 镜像仓库节点带宽 ≥ 所有Worker节点并发拉取带宽之和
  • 避免跨AZ或跨地域拉取,延迟应控制在1ms以内
  • 测试期间关闭节点间的带宽限制与QoS策略
Kubernetes测试环境节点规格与网络拓扑 测试环境节点规格与网络拓扑 Control Plane 2 vCPU / 4 GB / 1 Gbps Worker 1 4 vCPU / 8 GB / 10 Gbps Worker 2 4 vCPU / 8 GB / 10 Gbps Worker 3 4 vCPU / 8 GB / 10 Gbps 本地Harbor镜像仓库 同二层网络 / 延迟 < 1ms 说明:所有Worker节点规格一致,本地仓库与节点同二层网络,消除公网波动影响

2.4 容器运行时与CRI配置

镜像拉取速度与容器运行时直接相关。测试环境应统一使用containerd(v1.7.x+),并确保以下配置项一致:

# /etc/containerd/config.toml 关键配置
version = 2

[plugins."io.containerd.grpc.v1.cri".registry]
  config_path = "/etc/containerd/certs.d"

[plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
  endpoint = ["https://registry-1.docker.io"]

[plugins."io.containerd.grpc.v1.cri".containerd]
  default_runtime_name = "runc"
  snapshotter = "overlayfs"
快照器选择: 统一使用 overlayfs 快照器。若使用 devmapper 或 native,镜像层解压与挂载性能差异可达30%以上,会污染测试数据。

2.5 环境验证清单

在开始测试前,逐项确认以下条件已满足:

  • 集群版本:kubectl version 输出 v1.28.x
  • 节点规格:所有Worker节点CPU、内存、磁盘型号一致
  • 网络带宽:节点间 iperf3 测试带宽 ≥ 9.5 Gbps(10Gbps环境)
  • 镜像仓库:本地Harbor已部署,curl -I http://harbor.local/v2/ 返回 200
  • 容器运行时:crictl info 显示 containerd v1.7.x,快照器为 overlayfs
  • 节点间延迟:ping -c 10 <worker-ip> 平均延迟 < 1ms
基线记录: 在测试开始前,记录每个节点的 /proc/cpuinfo、free -h、df -h 与 ethtool eth0 输出,作为后续异常排查的参照基线。