第二部分:Kubernetes 网络深度解析
从 Pod 网络到 Service 转发的完整网络体系
目录
第4章:Kubernetes 网络模型与 CNI 深入原理
4.1 Kubernetes 网络设计的四大原则
Kubernetes 网络模型遵循简单但强约束的四条规则:
| 原则 | 说明 | 实现机制 |
|---|---|---|
| 1. 所有 Pod 都在一个统一的平面网络中 | 每个 Pod 都有唯一 IP,Pod 之间直接通信,不经 NAT | CNI 插件 + Overlay 网络 |
| 2. 所有节点都能与所有 Pod 通信 | 节点可以直接访问任何 Pod | 路由表 + 网桥 |
| 3. Pod 认为自己直接连接到整个网络 | Pod 不感知 NAT,看到的是真实网络 | 网络命名空间隔离 |
| 4. Service 是一个虚拟 IP | 通过 kube-proxy 转发到后端 Pod | iptables/IPVS/eBPF |
总结一句话:K8s 通过 "CNI + kube-proxy + overlay 网络" 把多节点系统伪装成一个"巨大的虚拟交换机"。
4.2 Pod 网络模型原理(CNI)
4.2.1 Pod 创建网络流程
当 kubelet 创建 Pod 时:
kubelet → CNI 插件 → 创建 netns → 创建 veth → 加入 bridge → 分配 IP
CNI 插件(如 Flannel、Calico)负责:
- 创建 veth pair
- 把一端塞进 Pod
- 另一端加入宿主机网桥
- 为 Pod 分配 IP
- 更新路由表与 ARP
4.2.2 Pod 内部结构
Pod
└── eth0 → veth0 ↔ veth1 → cni0 (bridge)
4.2.3 网络平面示意
Node1
├── PodA: 10.244.1.2 → vethA ↔ cni0
└── eth0 → 192.168.1.11
Node2
├── PodB: 10.244.2.3 → vethB ↔ cni0
└── eth0 → 192.168.1.12
CNI 通过 Overlay 技术(如 VXLAN)在 192.168 网段之上虚拟出 Pod 网段(10.244.x.x)。
4.3 典型 CNI 插件与网络类型
| 类型 | 示例 | 通信方式 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|---|
| Bridge | Flannel (vxlan) | Overlay (UDP 封装) | 简单易用 | 性能略低 | 小型集群 |
| Host-local | Default CNI | 单节点 | 轻量 | 不跨节点 | 开发测试 |
| BGP | Calico | Underlay | 高性能 | 配置复杂 | 中大型集群 |
| eBPF | Cilium | 内核 hook | 无 NAT、高性能 | 较新技术栈 | 高性能场景 |
| Overlay | Flannel, Weave | 封包转发 | 简单部署 | 额外封装损耗 | 通用场景 |
4.4 跨节点通信机制(以 Flannel VXLAN 为例)
4.4.1 网络结构
PodA(10.244.1.3) ─ veth ─ cni0 ─ flannel.1 ─ eth0(192.168.1.11)
↓
VXLAN Tunnel
↓
PodB(10.244.2.5) ─ veth ─ cni0 ─ flannel.1 ─ eth0(192.168.1.12)
4.4.2 VXLAN 封装过程
- PodA 发包给 10.244.2.5
- CNI 路由表发现:下一跳 → 192.168.1.12
- flannel 封装包头(VXLAN header)
- 通过物理网卡发到 Node2
- Node2 flannel 解包 → 发给 PodB
4.5 Service 与 kube-proxy 转发机制
Kubernetes 的 Service 提供统一访问入口,核心通过 kube-proxy 实现流量分发。
4.5.1 Service 的三种类型
| 类型 | 功能 | 用途 | 示例 |
|---|---|---|---|
| ClusterIP | 内部访问 | 默认类型 | kubectl get svc |
| NodePort | 外部访问节点IP:端口 | 简单暴露 | kubectl expose deployment web --type=NodePort |
| LoadBalancer | 云服务整合 | 自动分配公网IP | 云环境自动配置 |
4.5.2 kube-proxy 的三种模式
| 模式 | 实现方式 | 性能 | 特点 | 适用场景 |
|---|---|---|---|---|
| userspace | 用户态转发 | 慢(弃用) | 早期实现 | 已废弃 |
| iptables | DNAT 规则重写 | 中等 | 规则复杂 | 中小型集群 |
| ipvs | 内核 LVS 模块 | 高性能 | O(1) 查询 | 大型集群 |
| eBPF | 内核 hook | 最高 | 无规则限制 | 高性能场景 |
4.6 DNS 与 CoreDNS 工作机制
Kubernetes 默认使用 CoreDNS 提供集群内 DNS 解析。
4.6.1 DNS 配置
每个 Pod 内部 /etc/resolv.conf:
nameserver 10.96.0.10
search default.svc.cluster.local svc.cluster.local cluster.local
4.6.2 DNS 查询链
Pod → CoreDNS Service (ClusterIP) → 外部 DNS(8.8.8.8)
CNI 插件对比实验
实验环境准备
#!/bin/bash
# CNI 插件对比实验环境搭建
# 1. 创建实验集群
kind create cluster --name cni-test --config - <<EOF
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: worker
- role: worker
networking:
podSubnet: "10.244.0.0/16"
serviceSubnet: "10.96.0.0/12"
EOF
# 2. 安装测试工具
kubectl apply -f - <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
name: test-pods
spec:
replicas: 6
selector:
matchLabels:
app: test-pod
template:
metadata:
labels:
app: test-pod
spec:
containers:
- name: test
image: nginx:alpine
ports:
- containerPort: 80
EOF
# 3. 等待 Pod 就绪
kubectl wait --for=condition=Ready pod -l app=test-pod --timeout=60s
实验1:Flannel VXLAN 模式
# 1. 安装 Flannel
kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
# 2. 等待 Flannel 就绪
kubectl wait --for=condition=Ready pod -l app=flannel -n kube-system --timeout=60s
# 3. 查看网络配置
kubectl get nodes -o wide
kubectl get pods -o wide
# 4. 测试 Pod 间通信
kubectl exec -it $(kubectl get pod -l app=test-pod -o jsonpath='{.items[0].metadata.name}') -- ping -c 3 $(kubectl get pod -l app=test-pod -o jsonpath='{.items[1].metadata.name}')
# 5. 查看 VXLAN 接口
kubectl get nodes -o jsonpath='{.items[0].status.addresses[0].address}' | xargs -I {} ssh {} "ip link show flannel.1"
# 6. 性能测试
kubectl apply -f - <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
name: iperf-server
spec:
replicas: 1
selector:
matchLabels:
app: iperf-server
template:
metadata:
labels:
app: iperf-server
spec:
containers:
- name: iperf
image: networkstatic/iperf3
command: ["iperf3", "-s"]
ports:
- containerPort: 5201
EOF
kubectl apply -f - <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
name: iperf-client
spec:
replicas: 1
selector:
matchLabels:
app: iperf-client
template:
metadata:
labels:
app: iperf-client
spec:
containers:
- name: iperf
image: networkstatic/iperf3
command: ["sh", "-c", "sleep 10 && iperf3 -c iperf-server -t 30"]
EOF
实验2:Calico BGP 模式
# 1. 删除 Flannel
kubectl delete -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
# 2. 安装 Calico
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
# 3. 等待 Calico 就绪
kubectl wait --for=condition=Ready pod -l k8s-app=calico-node -n kube-system --timeout=60s
# 4. 查看 BGP 状态
kubectl get nodes -o jsonpath='{.items[0].status.addresses[0].address}' | xargs -I {} ssh {} "calicoctl node status"
# 5. 查看路由表
kubectl get nodes -o jsonpath='{.items[0].status.addresses[0].address}' | xargs -I {} ssh {} "ip route | grep calico"
# 6. 性能测试(同上)
实验3:Cilium eBPF 模式
# 1. 删除 Calico
kubectl delete -f https://docs.projectcalico.org/manifests/calico.yaml
# 2. 安装 Cilium
cilium install
# 3. 等待 Cilium 就绪
cilium status --wait
# 4. 查看 eBPF 状态
cilium status
# 5. 启用 Hubble 可视化
cilium hubble enable
# 6. 查看网络流量
cilium hubble observe
# 7. 性能测试
实验4:性能对比测试
#!/bin/bash
# CNI 性能对比测试脚本
# 测试函数
test_cni_performance() {
local cni_name=$1
echo "测试 $cni_name 性能..."
# 获取 Pod IP
local server_pod=$(kubectl get pod -l app=iperf-server -o jsonpath='{.items[0].metadata.name}')
local client_pod=$(kubectl get pod -l app=iperf-client -o jsonpath='{.items[0].metadata.name}')
# 运行 iperf3 测试
kubectl exec $client_pod -- iperf3 -c $server_pod -t 30 -f M > ${cni_name}_iperf3.log 2>&1
# 提取结果
local bandwidth=$(grep "sender" ${cni_name}_iperf3.log | awk '{print $7}')
echo "$cni_name 带宽: $bandwidth MB/s"
}
# 测试延迟
test_latency() {
local cni_name=$1
echo "测试 $cni_name 延迟..."
local pod1=$(kubectl get pod -l app=test-pod -o jsonpath='{.items[0].metadata.name}')
local pod2=$(kubectl get pod -l app=test-pod -o jsonpath='{.items[1].metadata.name}')
kubectl exec $pod1 -- ping -c 100 $pod2 > ${cni_name}_ping.log 2>&1
local avg_latency=$(grep "avg" ${cni_name}_ping.log | awk -F'/' '{print $5}')
echo "$cni_name 平均延迟: $avg_latency ms"
}
# 运行所有测试
echo "开始 CNI 性能对比测试..."
# 测试 Flannel
test_cni_performance "flannel"
test_latency "flannel"
# 测试 Calico
test_cni_performance "calico"
test_latency "calico"
# 测试 Cilium
test_cni_performance "cilium"
test_latency "cilium"
echo "测试完成!查看日志文件获取详细结果。"
Service 转发机制深入
实验1:iptables 模式分析
# 1. 创建测试 Service
kubectl apply -f - <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
name: web
spec:
replicas: 3
selector:
matchLabels:
app: web
template:
metadata:
labels:
app: web
spec:
containers:
- name: nginx
image: nginx:alpine
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: web-service
spec:
selector:
app: web
ports:
- port: 80
targetPort: 80
type: ClusterIP
EOF
# 2. 查看 iptables 规则
sudo iptables -t nat -L KUBE-SERVICES -n -v
# 3. 查看具体 Service 规则
sudo iptables -t nat -L KUBE-SVC-$(kubectl get svc web-service -o jsonpath='{.metadata.uid}' | cut -d'-' -f1) -n -v
# 4. 测试 Service 访问
kubectl run test-pod --image=busybox --rm -it --restart=Never -- sh -c "wget -qO- web-service"
# 5. 查看连接跟踪
sudo conntrack -L | grep web-service
实验2:IPVS 模式配置
# 1. 修改 kube-proxy 配置
kubectl edit configmap kube-proxy -n kube-system
# 在 data 部分添加:
# mode: "ipvs"
# ipvs:
# scheduler: "rr"
# 2. 重启 kube-proxy
kubectl rollout restart daemonset/kube-proxy -n kube-system
# 3. 等待重启完成
kubectl rollout status daemonset/kube-proxy -n kube-system
# 4. 查看 IPVS 规则
sudo ipvsadm -Ln
# 5. 查看 IPVS 统计
sudo ipvsadm -Ln --stats
# 6. 测试负载均衡
for i in {1..10}; do
kubectl run test-pod-$i --image=busybox --rm -it --restart=Never -- sh -c "wget -qO- web-service && echo"
done
实验3:Cilium eBPF 模式
# 1. 启用 Cilium eBPF kube-proxy 替换
cilium config set kubeProxyReplacement strict
# 2. 重启 Cilium
kubectl rollout restart daemonset/cilium -n kube-system
# 3. 验证 eBPF 模式
cilium status
# 4. 查看 eBPF 映射
cilium bpf maps list | grep kube-proxy
# 5. 测试 Service 访问
kubectl run test-pod --image=busybox --rm -it --restart=Never -- sh -c "wget -qO- web-service"
# 6. 查看 eBPF 统计
cilium metrics list | grep kube-proxy
网络排障完整案例
案例1:Pod 间不通的系统化排查
问题描述
Pod A 无法 ping 通 Pod B,需要系统化排查。
排查步骤
#!/bin/bash
# Pod 间不通排查脚本
POD_A="pod-a"
POD_B="pod-b"
echo "=== Pod 间不通排查 ==="
# 1. 检查 Pod 状态
echo "1. 检查 Pod 状态:"
kubectl get pods -o wide
# 2. 检查 Pod IP
echo "2. 检查 Pod IP:"
POD_A_IP=$(kubectl get pod $POD_A -o jsonpath='{.status.podIP}')
POD_B_IP=$(kubectl get pod $POD_B -o jsonpath='{.status.podIP}')
echo "Pod A IP: $POD_A_IP"
echo "Pod B IP: $POD_B_IP"
# 3. 检查网络接口
echo "3. 检查网络接口:"
kubectl exec $POD_A -- ip addr show
kubectl exec $POD_B -- ip addr show
# 4. 检查路由表
echo "4. 检查路由表:"
kubectl exec $POD_A -- ip route show
kubectl exec $POD_B -- ip route show
# 5. 检查 ARP 表
echo "5. 检查 ARP 表:"
kubectl exec $POD_A -- arp -a
kubectl exec $POD_B -- arp -a
# 6. 测试连通性
echo "6. 测试连通性:"
kubectl exec $POD_A -- ping -c 3 $POD_B_IP
# 7. 检查 CNI 插件状态
echo "7. 检查 CNI 插件状态:"
kubectl get pods -n kube-system | grep -E "(flannel|calico|cilium)"
# 8. 检查节点网络
echo "8. 检查节点网络:"
NODE_A=$(kubectl get pod $POD_A -o jsonpath='{.spec.nodeName}')
NODE_B=$(kubectl get pod $POD_B -o jsonpath='{.spec.nodeName}')
echo "Pod A 节点: $NODE_A"
echo "Pod B 节点: $NODE_B"
# 9. 检查网桥状态
echo "9. 检查网桥状态:"
kubectl get nodes -o jsonpath='{.items[0].status.addresses[0].address}' | xargs -I {} ssh {} "brctl show"
# 10. 检查 iptables 规则
echo "10. 检查 iptables 规则:"
kubectl get nodes -o jsonpath='{.items[0].status.addresses[0].address}' | xargs -I {} ssh {} "iptables -t nat -L -n -v | grep -A 5 -B 5 $POD_A_IP"
案例2:DNS 解析失败的多层诊断
问题描述
Pod 无法解析 Service 名称,需要诊断 DNS 问题。
排查步骤
#!/bin/bash
# DNS 解析失败排查脚本
echo "=== DNS 解析失败排查 ==="
# 1. 检查 CoreDNS 状态
echo "1. 检查 CoreDNS 状态:"
kubectl get pods -n kube-system -l k8s-app=kube-dns
kubectl get svc -n kube-system kube-dns
# 2. 检查 CoreDNS 日志
echo "2. 检查 CoreDNS 日志:"
kubectl logs -n kube-system -l k8s-app=kube-dns --tail=50
# 3. 检查 Pod DNS 配置
echo "3. 检查 Pod DNS 配置:"
kubectl run test-dns --image=busybox --rm -it --restart=Never -- sh -c "cat /etc/resolv.conf"
# 4. 测试 DNS 解析
echo "4. 测试 DNS 解析:"
kubectl run test-dns --image=busybox --rm -it --restart=Never -- sh -c "nslookup kubernetes.default.svc.cluster.local"
# 5. 检查 Service 端点
echo "5. 检查 Service 端点:"
kubectl get endpoints kubernetes
# 6. 测试外部 DNS
echo "6. 测试外部 DNS:"
kubectl run test-dns --image=busybox --rm -it --restart=Never -- sh -c "nslookup google.com"
# 7. 检查网络策略
echo "7. 检查网络策略:"
kubectl get networkpolicies --all-namespaces
# 8. 检查 CoreDNS 配置
echo "8. 检查 CoreDNS 配置:"
kubectl get configmap coredns -n kube-system -o yaml
案例3:跨节点网络延迟定位
问题描述
跨节点 Pod 通信延迟过高,需要定位网络瓶颈。
排查步骤
#!/bin/bash
# 跨节点网络延迟排查脚本
echo "=== 跨节点网络延迟排查 ==="
# 1. 创建跨节点测试 Pod
kubectl apply -f - <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
name: latency-test
spec:
replicas: 2
selector:
matchLabels:
app: latency-test
template:
metadata:
labels:
app: latency-test
spec:
containers:
- name: test
image: nginx:alpine
ports:
- containerPort: 80
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: app
operator: In
values:
- latency-test
topologyKey: kubernetes.io/hostname
EOF
# 2. 等待 Pod 就绪
kubectl wait --for=condition=Ready pod -l app=latency-test --timeout=60s
# 3. 获取 Pod 信息
POD1=$(kubectl get pod -l app=latency-test -o jsonpath='{.items[0].metadata.name}')
POD2=$(kubectl get pod -l app=latency-test -o jsonpath='{.items[1].metadata.name}')
POD1_IP=$(kubectl get pod $POD1 -o jsonpath='{.status.podIP}')
POD2_IP=$(kubectl get pod $POD2 -o jsonpath='{.status.podIP}')
NODE1=$(kubectl get pod $POD1 -o jsonpath='{.spec.nodeName}')
NODE2=$(kubectl get pod $POD2 -o jsonpath='{.spec.nodeName}')
echo "Pod 1: $POD1 ($POD1_IP) on $NODE1"
echo "Pod 2: $POD2 ($POD2_IP) on $NODE2"
# 4. 测试延迟
echo "4. 测试延迟:"
kubectl exec $POD1 -- ping -c 10 $POD2_IP
# 5. 测试带宽
echo "5. 测试带宽:"
kubectl exec $POD1 -- iperf3 -c $POD2_IP -t 10
# 6. 检查网络路径
echo "6. 检查网络路径:"
kubectl exec $POD1 -- traceroute $POD2_IP
# 7. 检查 MTU
echo "7. 检查 MTU:"
kubectl exec $POD1 -- ip link show | grep mtu
kubectl exec $POD2 -- ip link show | grep mtu
# 8. 检查网络统计
echo "8. 检查网络统计:"
kubectl exec $POD1 -- ss -s
kubectl exec $POD2 -- ss -s
# 9. 检查节点网络
echo "9. 检查节点网络:"
kubectl get nodes -o jsonpath='{.items[0].status.addresses[0].address}' | xargs -I {} ssh {} "ethtool eth0"
# 10. 检查 CNI 配置
echo "10. 检查 CNI 配置:"
kubectl get nodes -o jsonpath='{.items[0].status.addresses[0].address}' | xargs -I {} ssh {} "ip route show | grep -E '(flannel|calico|cilium)'"
实验环境搭建
快速搭建脚本
#!/bin/bash
# Kubernetes 网络实验环境搭建脚本
set -e
echo "开始搭建 Kubernetes 网络实验环境..."
# 1. 安装依赖
sudo apt-get update
sudo apt-get install -y curl wget git
# 2. 安装 Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker $USER
# 3. 安装 kubectl
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
# 4. 安装 kind
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.20.0/kind-linux-amd64
chmod +x ./kind
sudo mv ./kind /usr/local/bin/kind
# 5. 安装 Cilium CLI
curl -L --remote-name-all https://github.com/cilium/cilium-cli/releases/latest/download/cilium-linux-amd64.tar.gz
tar xzvfC cilium-linux-amd64.tar.gz /usr/local/bin
rm cilium-linux-amd64.tar.gz
# 6. 创建实验集群
kind create cluster --name network-test --config - <<EOF
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: worker
- role: worker
networking:
podSubnet: "10.244.0.0/16"
serviceSubnet: "10.96.0.0/12"
EOF
# 7. 等待集群就绪
kubectl wait --for=condition=Ready node --all --timeout=60s
# 8. 安装测试工具
kubectl apply -f - <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
name: network-tools
spec:
replicas: 1
selector:
matchLabels:
app: network-tools
template:
metadata:
labels:
app: network-tools
spec:
containers:
- name: tools
image: nicolaka/netshoot
command: ["sleep", "3600"]
EOF
echo "Kubernetes 网络实验环境搭建完成!"
echo "运行 'kubectl get nodes' 查看集群状态"
echo "运行 'kubectl get pods' 查看 Pod 状态"
测试工具部署
# 部署网络测试工具集
kubectl apply -f - <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
name: iperf3-server
spec:
replicas: 1
selector:
matchLabels:
app: iperf3-server
template:
metadata:
labels:
app: iperf3-server
spec:
containers:
- name: iperf3
image: networkstatic/iperf3
command: ["iperf3", "-s"]
ports:
- containerPort: 5201
---
apiVersion: v1
kind: Service
metadata:
name: iperf3-server
spec:
selector:
app: iperf3-server
ports:
- port: 5201
targetPort: 5201
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: wrk-client
spec:
replicas: 1
selector:
matchLabels:
app: wrk-client
template:
metadata:
labels:
app: wrk-client
spec:
containers:
- name: wrk
image: williamyeh/wrk
command: ["sleep", "3600"]
EOF
命令速查表
网络诊断命令
| 命令 | 功能 | 示例 |
|---|---|---|
kubectl get pods -o wide | 查看 Pod 网络信息 | kubectl get pods -o wide |
kubectl get svc | 查看 Service 信息 | kubectl get svc |
kubectl get endpoints | 查看 Service 端点 | kubectl get endpoints |
kubectl describe pod <pod> | 查看 Pod 详细信息 | kubectl describe pod my-pod |
kubectl logs <pod> | 查看 Pod 日志 | kubectl logs my-pod |
kubectl exec -it <pod> -- sh | 进入 Pod 执行命令 | kubectl exec -it my-pod -- sh |
网络测试命令
| 命令 | 功能 | 示例 |
|---|---|---|
ping <ip> | 测试连通性 | ping 10.244.1.2 |
traceroute <ip> | 查看网络路径 | traceroute 10.244.1.2 |
nslookup <hostname> | DNS 解析测试 | nslookup kubernetes.default |
dig <hostname> | DNS 详细查询 | dig kubernetes.default.svc.cluster.local |
telnet <ip> <port> | 端口连通性测试 | telnet 10.244.1.2 80 |
curl <url> | HTTP 请求测试 | curl http://web-service |
系统网络命令
| 命令 | 功能 | 示例 |
|---|---|---|
ip addr show | 查看网络接口 | ip addr show |
ip route show | 查看路由表 | ip route show |
ip link show | 查看链路状态 | ip link show |
ss -tnp | 查看 Socket 状态 | ss -tnp |
netstat -tulpn | 查看网络连接 | netstat -tulpn |
tcpdump -i any | 抓包分析 | tcpdump -i any port 80 |
CNI 特定命令
| CNI | 命令 | 功能 | 示例 |
|---|---|---|---|
| Flannel | ip link show flannel.1 | 查看 VXLAN 接口 | ip link show flannel.1 |
| Calico | calicoctl node status | 查看 BGP 状态 | calicoctl node status |
| Cilium | cilium status | 查看 Cilium 状态 | cilium status |
| Cilium | cilium hubble observe | 查看网络流量 | cilium hubble observe |
性能测试命令
| 命令 | 功能 | 示例 |
|---|---|---|
iperf3 -c <server> | 带宽测试 | iperf3 -c iperf3-server |
wrk -t4 -c100 -d30s <url> | HTTP 压力测试 | wrk -t4 -c100 -d30s http://web-service |
ab -n 1000 -c 10 <url> | Apache 压力测试 | ab -n 1000 -c 10 http://web-service |