docker/ip-util-check网络检查工具镜像(network-checker)是一款轻量级自动化工具,用于在引擎升级前对目标网络环境进行系统性检查。其核心用途是通过验证网络连通性、服务可用性及关键性能指标,确保网络环境满足引擎升级的前置要求,降低因网络问题导致升级失败或服务中断的风险。
bashdocker run -it --rm \ --cap-add=NET_RAW \ # 如需ICMP(Ping)检查需添加此权限 -e TARGET_HOST="prod-db.example.com" \ -e CHECK_PORTS="3306,22" \ -e CHECK_TYPE="ping,tcp,dns" \ -e OUTPUT_FORMAT="text" \ network-checker:latest
yamlversion: '3.8' services: pre-upgrade-check: image: network-checker:latest cap_add: - NET_RAW # 启用Ping功能 environment: TARGET_HOST: "kube-apiserver.cluster.local" CHECK_PORTS: "6443,2379,2380" PING_COUNT: 3 TIMEOUT: 15 DNS_SERVER: "10.96.0.10" # Kubernetes DNS OUTPUT_FORMAT: "json" restart: "no" # 一次性任务
| 环境变量 | 描述 | 是否必填 | 默认值 | 示例值 |
|---|---|---|---|---|
| TARGET_HOST | 目标主机/IP(引擎所在节点) | 是 | - | "db-prod-01", "192.168.1.10" |
| CHECK_TYPE | 检查类型(逗号分隔) | 否 | "ping,tcp,dns" | "ping,udp,http" |
| CHECK_PORTS | 需检查的端口列表(TCP/UDP时生效) | 否 | - | "80,443,3306" |
| PING_COUNT | Ping测试包数量 | 否 | 4 | 2 |
| DNS_SERVER | DNS解析服务器地址 | 否 | 主机默认DNS | "8.8.8.8", "114.114.114.114" |
| TIMEOUT | 单次检查超时时间(秒) | 否 | 5 | 10 |
| OUTPUT_FORMAT | 结果输出格式 | 否 | "text" | "json" |
| BANDWIDTH_TEST | 是否启用带宽测试(true/false) | 否 | "false" | "true" |
| HTTP_ENDPOINT | HTTP检查路径(CHECK_TYPE含http时必填) | 否 | "/" | "/healthz" |
通过挂载外部脚本扩展检查逻辑:
bashdocker run -it --rm \ -v $(pwd)/custom-checks.sh:/app/custom.sh \ network-checker:latest \ /app/custom.sh
在.gitlab-ci.yml中添加升级前检查阶段:
yamlstages: - pre-upgrade - upgrade network-validation: stage: pre-upgrade image: network-checker:latest variables: TARGET_HOST: "prod-app-server" CHECK_PORTS: "8080,9090" OUTPUT_FORMAT: "json" script: - /app/run-check.sh - cat check-result.json | jq -e '.conclusion == "network_ok"' # 非0退出码阻断后续流程 artifacts: paths: [check-result.json]
=== 网络检查报告 === 目标主机: prod-db.example.com 检查时间: 2023-10-20 15:30:00 检查项: ping, tcp, dns [PING] 结果: 通过 (平均延迟: 18ms, 丢包率: 0%) [TCP] 端口 3306: 开放 (响应时间: 42ms) [TCP] 端口 22: 开放 (响应时间: 12ms) [DNS] 解析 prod-db.example.com: 成功 (IP: 10.20.30.40) === 结论: 网络环境满足升级要求 ===
json{ "target_host": "prod-db.example.com", "timestamp": "2023-10-20T15:30:00Z", "check_items": ["ping", "tcp", "dns"], "results": { "ping": {"status": "pass", "avg_latency_ms": 18, "packet_loss": 0}, "tcp": [ {"port": 3306, "status": "open", "response_ms": 42}, {"port": 22, "status": "open", "response_ms": 12} ], "dns": {"status": "pass", "ips": ["10.20.30.40"]} }, "conclusion": "network_ok" }
NET_RAW权限(添加--cap-add=NET_RAW参数)。PING_COUNT(如设为2),避免网络负载;优先使用TCP检查替代Ping。conclusion为network_ok表示网络正常;network_issue时需修复问题后执行升级。TIMEOUT设为10-15秒,避免因网络波动导致误判。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务