这是一套专为 Kubernetes 集群设计的 DNS 解析测试工具,用于评估和诊断集群内外 DNS 解析功能的可靠性和性能。
| 场景 | DNS服务器 | 目标域名 | 测试目的 |
|---|---|---|---|
| 场景1 | 集群内DNS | 集群内域名 | 测试集群内部DNS服务基本功能 |
| 场景2 | 集群内DNS | 集群外域名 | 测试集群DNS上游转发功能 |
| 场景3 | 集群外DNS | 集群外域名 | 对照组,测试外部DNS可用性 |
# 基本测试 - 使用默认配置测试所有场景
kubectl run dns-test --image=docker.cnb.cool/hzboiler/k8s-dns-test --rm -it --restart=Never
# 同时测试UDP和TCP协议
kubectl run dns-test --image=docker.cnb.cool/hzboiler/k8s-dns-test --rm -it --restart=Never \
-- -p both -n 100 -t 3
# 快速测试 - 每个场景20次
kubectl run dns-test --image=docker.cnb.cool/hzboiler/k8s-dns-test --rm -it --restart=Never \
-- -p both -n 20 -t 2
# 仅测试UDP协议
kubectl run dns-test-udp --image=docker.cnb.cool/hzboiler/k8s-dns-test --rm -it --restart=Never \
-- -p udp -n 100
# 仅测试TCP协议
kubectl run dns-test-tcp --image=docker.cnb.cool/hzboiler/k8s-dns-test --rm -it --restart=Never \
-- -p tcp -n 100
# 进入Pod内部进行调试
kubectl run dns-debug --image=docker.cnb.cool/hzboiler/k8s-dns-test --rm -it --restart=Never \
-- /bin/bash
# 测试Unicode和emoji支持
kubectl run unicode-test --image=docker.cnb.cool/hzboiler/k8s-dns-test --rm -it --restart=Never \
-- /app/test-unicode.sh
| 参数 | 说明 | 默认值 | 示例 |
|---|---|---|---|
-c | 集群内DNS服务器 | 10.96.0.10 | -c 10.96.0.10 |
-e | 集群外DNS服务器 | 8.8.8.8 | -e 114.114.114.114 |
-i | 集群内域名 | kubernetes.default.svc.cluster.local | -i my-service.default.svc.cluster.local |
-x | 集群外域名 | google.com | -x baidu.com |
-p | 测试协议 | both | -p udp / -p tcp / -p both |
-n | 每个场景测试次数 | 100 | -n 200 |
-t | 超时时间(秒) | 2 | -t 5 |
| 环境变量 | 对应参数 | 说明 |
|---|---|---|
CLUSTER_DNS_SERVER | -c | 集群内DNS服务器地址 |
EXTERNAL_DNS_SERVER | -e | 集群外DNS服务器地址 |
INTERNAL_DOMAIN | -i | 集群内域名 |
EXTERNAL_DOMAIN | -x | 集群外域名 |
PROTOCOL | -p | 测试协议 (udp/tcp/both) |
TOTAL | -n | 每个场景测试次数 |
TIMEOUT | -t | 超时时间(秒) |
kubectl - K8s命令行工具# 使用默认配置
kubectl run dns-test --image=docker.cnb.cool/hzboiler/k8s-dns-test --rm -it --restart=Never
# 快速测试(每个场景20次)
kubectl run dns-test --image=docker.cnb.cool/hzboiler/k8s-dns-test --rm -it --restart=Never \
-- -n 20 -t 1
# 仅测试UDP协议
kubectl run dns-test --image=docker.cnb.cool/hzboiler/k8s-dns-test --rm -it --restart=Never \
-- -p udp -n 100
# 测试特定DNS服务器
kubectl run dns-test --image=docker.cnb.cool/hzboiler/k8s-dns-test --rm -it --restart=Never \
-- -c 10.96.0.10 -e 114.114.114.114
# 测试特定域名
kubectl run dns-test --image=docker.cnb.cool/hzboiler/k8s-dns-test --rm -it --restart=Never \
-- -i my-app.default.svc.cluster.local -x baidu.com
# 高强度测试
kubectl run dns-test --image=docker.cnb.cool/hzboiler/k8s-dns-test --rm -it --restart=Never \
-- -n 500 -t 5
# 通过环境变量配置
kubectl run dns-test --image=docker.cnb.cool/hzboiler/k8s-dns-test --rm -it --restart=Never \
--env="CLUSTER_DNS_SERVER=10.96.0.10" \
--env="EXTERNAL_DOMAIN=baidu.com" \
--env="PROTOCOL=both"
欢迎提交Issue和Pull Request!
git checkout -b feature/AmazingFeature)git commit -m 'Add some AmazingFeature')git push origin feature/AmazingFeature)本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。