k8s 测试集群 pod 网络连通性 | 字数总计: 373 | 阅读时长: 2分钟 | 阅读量:
本文永久链接: https://www.xtplayer.cn/kubernetes/test-cluster-network-connectivity/
使用 busybox 镜像通过以下命令创建 DaemonSet 类型的测试应用,
kubectl create deploy net-test --image=registry.cn-hangzhou.aliyuncs.com/rancher/busybox \ --dry-run=client -o yaml | \ sed '/null\|{}\|replicas/d;/status/,$d;s/Deployment/DaemonSet/g' | \ sed '/image: .*/a \ stdin: true\n tty: true' | \ kubectl apply -f -
等 DaemonSet pod 创建完成后,使用以下脚本去交叉测试跨节点 pod 与 pod 之间的网络连通性。
#!/bin/bash PODS=$(kubectl get pods -l app=net-test -o jsonpath='{range .items[*]}{.metadata.name},{.status.podIP},{.status.hostIP}{"\n"}{end}' ) echo "开始测试 Pod 网络连通性..." echo "----------------------------------" for TEST_POD_INFO in $PODS ; do TEST_POD_NAME=$(echo $TEST_POD_INFO | cut -d',' -f1) TEST_POD_IP=$(echo $TEST_POD_INFO | cut -d',' -f2) TEST_HOST_IP=$(echo $TEST_POD_INFO | cut -d',' -f3) echo "在 Pod $TEST_POD_NAME ($TEST_POD_IP ) ($TEST_HOST_IP ) 中 ping:" for TARGET_POD_INFO in $PODS ; do TARGET_POD_NAME=$(echo $TARGET_POD_INFO | cut -d',' -f1) TARGET_POD_IP=$(echo $TARGET_POD_INFO | cut -d',' -f2) TARGET_HOST_IP=$(echo $TARGET_POD_INFO | cut -d',' -f3) echo -n " -> $TARGET_POD_NAME ($TARGET_POD_IP ) ($TARGET_HOST_IP ): " kubectl exec $TEST_POD_NAME -- ping -c 3 $TARGET_POD_IP >/dev/null 2>&1 PING_POD_IP_RESULT=$? kubectl exec $TEST_POD_NAME -- ping -c 3 $TARGET_HOST_IP >/dev/null 2>&1 PING_HOST_IP_RESULT=$? if [ $PING_POD_IP_RESULT -eq 0 ]; then printf "\e[32mPing target Pod IP OK\e[0m | " else printf "\e[31mPing target Pod IP FAILED\e[0m | " fi if [ $PING_HOST_IP_RESULT -eq 0 ]; then printf "\e[32mPing target Host IP OK\e[0m\n" else printf "\e[31mPing target Host IP FAILED\e[0m\n" fi done printf "\n" done echo "Pod 网络测试完成。"