2. 环境准备:搭建压测沙盘所需的硬件与软件清单、Kubernetes集群部署、Prometheus与Grafana基础部署
本章将搭建完整的压测沙盘环境,作为后续所有压测与水位复核实验的基础设施。沙盘环境包含三个核心层:硬件资源层、Kubernetes 集群层、可观测性平台层。以下按步骤展开。
2.1 硬件与软件清单
沙盘环境采用混合部署模式:控制面与数据面分离,Prometheus 与 Grafana 独立部署在专用节点上,避免资源争抢影响压测数据准确性。
| 角色 | 配置要求 | 数量 | 操作系统 | 备注 |
|---|---|---|---|---|
| K8s Master 节点 | 4 vCPU / 8 GB RAM / 50 GB SSD | 1 | Ubuntu 22.04 LTS | 运行 etcd、kube-apiserver、scheduler、controller-manager |
| K8s Worker 节点 | 8 vCPU / 16 GB RAM / 100 GB SSD | 3 | Ubuntu 22.04 LTS | 运行压测负载 Pod 与日志采集器 |
| Prometheus 节点 | 4 vCPU / 8 GB RAM / 200 GB SSD | 1 | Ubuntu 22.04 LTS | 独立部署,接收远端写入,存储压测指标 |
| Grafana 节点 | 2 vCPU / 4 GB RAM / 50 GB SSD | 1 | Ubuntu 22.04 LTS | 可视化面板,与 Prometheus 同网段 |
硬件选型说明:Worker 节点配置高于 Master 节点,是因为压测期间每个 Worker 需要运行多个日志生成器与 Fluent Bit 采集器,CPU 和磁盘 IO 消耗较大。Prometheus 节点配备 200 GB SSD,用于存储压测期间的高频写入指标数据,避免因磁盘空间不足导致写入失败。
2.2 软件版本清单
所有软件版本经过交叉验证,确保兼容性。版本锁定是沙盘可复现性的关键。
| 软件 | 版本 | 安装方式 | 关键配置项 |
|---|---|---|---|
| Kubernetes | v1.28.2 | kubeadm | --pod-network-cidr=10.244.0.0/16 |
| etcd | v3.5.9 | K8s 内置 | --quota-backend-bytes=8GB |
| Prometheus | v2.47.0 | 二进制部署 | --storage.tsdb.retention.time=7d |
| Grafana | v10.1.2 | APT 仓库 | GF_SERVER_HTTP_PORT=3000 |
| Calico (CNI) | v3.26.1 | manifest 部署 | IPIP 模式 |
| Fluent Bit | v2.1.8 | Helm chart | 输出到 stdout + 文件 |
2.3 Kubernetes 集群部署步骤
使用 kubeadm 工具完成集群初始化。以下为 Master 节点初始化命令:
# Master 节点初始化
sudo kubeadm init \
--kubernetes-version=v1.28.2 \
--pod-network-cidr=10.244.0.0/16 \
--apiserver-advertise-address=192.168.1.10 \
--control-plane-endpoint=192.168.1.10
# 配置 kubectl
mkdir -p $HOME/.kube
sudo cp /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
# 安装 Calico 网络插件
kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/calico.yaml
Worker 节点加入集群:
# 在 Worker 节点上执行( 从 Master 初始化输出获取)
sudo kubeadm join 192.168.1.10:6443 -- <> \
--discovery--ca-cert-hash sha256:<hash>
注意:生产环境不建议将 etcd 与 kube-apiserver 部署在同一节点。本沙盘为简化网络拓扑,采用单 Master 单 etcd 架构。压测期间需监控 etcd 的磁盘 IO 和内存使用,避免因资源争抢导致集群不稳定。
2.4 Prometheus 基础部署
Prometheus 采用二进制方式独立部署在专用节点上,不运行在 K8s 集群内。这样做的好处是:压测期间 K8s 集群故障不会影响 Prometheus 的数据采集,且远端写入的流量路径更清晰。
# 下载并解压 Prometheus
wget https://github.com/prometheus/prometheus/releases/download/v2.47.0/prometheus-2.47.0.linux-amd64.tar.gz
tar xvf prometheus-2.47.0.linux-amd64.tar.gz
cd prometheus-2.47.0.linux-amd64
# 创建基础配置文件 prometheus.yml
cat > prometheus.yml << 'EOF'
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'kubernetes-nodes'
kubernetes_sd_configs:
- role: node
relabel_configs:
- source_labels: [__address__]
regex: '(.*):10250'
replacement: '${1}:9100'
target_label: __address__
EOF
# 启动 Prometheus(启用远端写入接收)
./prometheus \
--config.file=prometheus.yml \
--storage.tsdb.path=/data/prometheus \
--web.enable-remote-write-receiver \
--storage.tsdb.retention.time=7d &
关键参数说明:
--web.enable-remote-write-receiver 是启用 Prometheus 远端写入接收能力的开关。没有这个参数,Prometheus 将拒绝任何来自 Fluent Bit 或其他采集器的 Remote Write 请求。压测期间务必确认该参数已生效。
2.5 Grafana 基础部署
Grafana 同样独立部署,用于可视化压测指标。安装完成后配置 Prometheus 数据源。
# 安装 Grafana
sudo apt-get install -y software-properties-common
sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"
sudo apt-get update
sudo apt-get install -y grafana=10.1.2
# 启动 Grafana
sudo systemctl daemon-reload
sudo systemctl enable grafana-server
sudo systemctl start grafana-server
# 验证服务状态
curl http://localhost:3000/api/health
Grafana 启动后,通过浏览器访问 http://<Grafana-IP>:3000,默认用户名/密码为 admin/admin。首次登录后添加 Prometheus 数据源:
- URL:
http://<Prometheus-IP>:9090 - Access: Browser
- Scrape interval: 15s
- 保存并测试,确认 "Data source is working"
2.6 环境架构总览
下图展示了压测沙盘的整体部署架构,包括数据流与控制流路径:
2.7 环境验证清单
部署完成后,执行以下验证步骤,确保沙盘环境就绪:
| 验证项 | 验证命令 | 预期结果 |
|---|---|---|
| K8s 集群节点状态 | kubectl get nodes |
1 Master + 3 Worker 均为 Ready |
| etcd 健康检查 | kubectl get pods -n kube-system | grep etcd |
etcd Pod 运行中,无重启 |
| Prometheus 远端写入端点 | curl -X POST http://<Prom-IP>:9090/api/v1/write |
返回 204 No Content |
| Grafana 数据源连通性 | Grafana UI → Data Sources → 测试 | 显示 "Data source is working" |
| Fluent Bit 部署 | kubectl get pods -n logging |
Fluent Bit DaemonSet 所有 Pod 运行中 |
环境就绪标志:当上述 5 项验证全部通过,且 Prometheus 的
/api/v1/write 端点返回 204 时,压测沙盘环境准备完成。下一阶段将开始配置 Fluent Bit 的 Remote Write 输出插件,向 Prometheus 发送压测指标数据。