找出一些证据,证明service实现了负载均衡的功能
一、添加一个应用
image.png二、查看服务
# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
default-http-backend ClusterIP 10.152.183.99 <none> 80/TCP 150m
kubernetes ClusterIP 10.152.183.1 <none> 443/TCP 152m
nginx ClusterIP 10.152.183.176 <none> 8080/TCP 79s
三、抓包
新开一个终端,运行
tcpdump -i cbr0 port 80 -nnnnn
主机到容器的通信都会经过网络设备cbr0,所以在这个设备上抓包就可以了。端口80是容器的服务端口
四、访问服务
执行5次下面的命令,因为我们启动了四个实例,所以需要执行5次来确定后端服务都被轮询过
curl http://10.152.183.176:8080
五、查看抓包结果
# 10.1.1.22
11:28:46.772869 IP 10.1.1.1.56850 > 10.1.1.22.80: Flags [S],
11:28:46.772886 IP 10.1.1.22.80 > 10.1.1.1.56850: Flags [S.],
11:28:46.772897 IP 10.1.1.1.56850 > 10.1.1.22.80: Flags [.],
11:28:46.773719 IP 10.1.1.1.56850 > 10.1.1.22.80: Flags [P.],
11:28:46.773731 IP 10.1.1.22.80 > 10.1.1.1.56850: Flags [.],
11:28:46.773919 IP 10.1.1.22.80 > 10.1.1.1.56850: Flags [P.],
11:28:46.773928 IP 10.1.1.1.56850 > 10.1.1.22.80: Flags [.],
11:28:46.773958 IP 10.1.1.22.80 > 10.1.1.1.56850: Flags [P.],
11:28:46.773965 IP 10.1.1.1.56850 > 10.1.1.22.80: Flags [.],
11:28:46.777230 IP 10.1.1.1.56850 > 10.1.1.22.80: Flags [F.],
11:28:46.777348 IP 10.1.1.22.80 > 10.1.1.1.56850: Flags [F.],
11:28:46.777358 IP 10.1.1.1.56850 > 10.1.1.22.80: Flags [.],
# 10.1.1.24
11:28:54.877436 IP 10.1.1.1.34256 > 10.1.1.24.80: Flags [S],
11:28:54.877464 IP 10.1.1.24.80 > 10.1.1.1.34256: Flags [S.],
11:28:54.877482 IP 10.1.1.1.34256 > 10.1.1.24.80: Flags [.],
11:28:54.878450 IP 10.1.1.1.34256 > 10.1.1.24.80: Flags [P.],
11:28:54.878469 IP 10.1.1.24.80 > 10.1.1.1.34256: Flags [.],
11:28:54.878735 IP 10.1.1.24.80 > 10.1.1.1.34256: Flags [P.],
11:28:54.878748 IP 10.1.1.1.34256 > 10.1.1.24.80: Flags [.],
11:28:54.878800 IP 10.1.1.24.80 > 10.1.1.1.34256: Flags [P.],
11:28:54.878812 IP 10.1.1.1.34256 > 10.1.1.24.80: Flags [.],
11:28:54.881936 IP 10.1.1.1.34256 > 10.1.1.24.80: Flags [F.],
11:28:54.882097 IP 10.1.1.24.80 > 10.1.1.1.34256: Flags [F.],
11:28:54.882111 IP 10.1.1.1.34256 > 10.1.1.24.80: Flags [.],
# 10.1.1.23
11:28:59.800381 IP 10.1.1.1.49254 > 10.1.1.23.80: Flags [S],
11:28:59.800413 IP 10.1.1.23.80 > 10.1.1.1.49254: Flags [S.],
11:28:59.800423 IP 10.1.1.1.49254 > 10.1.1.23.80: Flags [.],
11:28:59.801032 IP 10.1.1.1.49254 > 10.1.1.23.80: Flags [P.],
11:28:59.801045 IP 10.1.1.23.80 > 10.1.1.1.49254: Flags [.],
11:28:59.801178 IP 10.1.1.23.80 > 10.1.1.1.49254: Flags [P.],
11:28:59.801188 IP 10.1.1.1.49254 > 10.1.1.23.80: Flags [.],
11:28:59.801207 IP 10.1.1.23.80 > 10.1.1.1.49254: Flags [P.],
11:28:59.801214 IP 10.1.1.1.49254 > 10.1.1.23.80: Flags [.],
11:28:59.803008 IP 10.1.1.1.49254 > 10.1.1.23.80: Flags [F.],
11:28:59.803104 IP 10.1.1.23.80 > 10.1.1.1.49254: Flags [F.],
11:28:59.803114 IP 10.1.1.1.49254 > 10.1.1.23.80: Flags [.],
# 10.1.1.21
11:29:06.831326 IP 10.1.1.1.53602 > 10.1.1.21.80: Flags [S],
11:29:06.831357 IP 10.1.1.21.80 > 10.1.1.1.53602: Flags [S.],
11:29:06.831368 IP 10.1.1.1.53602 > 10.1.1.21.80: Flags [.],
11:29:06.831918 IP 10.1.1.1.53602 > 10.1.1.21.80: Flags [P.],
11:29:06.831932 IP 10.1.1.21.80 > 10.1.1.1.53602: Flags [.],
11:29:06.832111 IP 10.1.1.21.80 > 10.1.1.1.53602: Flags [P.],
11:29:06.832120 IP 10.1.1.1.53602 > 10.1.1.21.80: Flags [.],
11:29:06.832140 IP 10.1.1.21.80 > 10.1.1.1.53602: Flags [P.],
11:29:06.832146 IP 10.1.1.1.53602 > 10.1.1.21.80: Flags [.],
11:29:06.833953 IP 10.1.1.1.53602 > 10.1.1.21.80: Flags [F.],
11:29:06.834056 IP 10.1.1.21.80 > 10.1.1.1.53602: Flags [F.],
11:29:06.834067 IP 10.1.1.1.53602 > 10.1.1.21.80: Flags [.],
# 10.1.1.22
11:29:11.109634 IP 10.1.1.1.56968 > 10.1.1.22.80: Flags [S],
11:29:11.109666 IP 10.1.1.22.80 > 10.1.1.1.56968: Flags [S.],
11:29:11.109676 IP 10.1.1.1.56968 > 10.1.1.22.80: Flags [.],
11:29:11.110202 IP 10.1.1.1.56968 > 10.1.1.22.80: Flags [P.],
11:29:11.110215 IP 10.1.1.22.80 > 10.1.1.1.56968: Flags [.],
11:29:11.110344 IP 10.1.1.22.80 > 10.1.1.1.56968: Flags [P.],
11:29:11.110353 IP 10.1.1.1.56968 > 10.1.1.22.80: Flags [.],
11:29:11.110372 IP 10.1.1.22.80 > 10.1.1.1.56968: Flags [P.],
11:29:11.110378 IP 10.1.1.1.56968 > 10.1.1.22.80: Flags [.],
11:29:11.112175 IP 10.1.1.1.56968 > 10.1.1.22.80: Flags [F.],
11:29:11.112274 IP 10.1.1.22.80 > 10.1.1.1.56968: Flags [F.],
11:29:11.112284 IP 10.1.1.1.56968 > 10.1.1.22.80: Flags [.],
可以看到,我们访问了5次服务,数据分别被转发到了5个节点上,这里可以看到每次完成的TCP通信过程
六、验证是否所有节点
# kubectl describe pods -l k8s-app=nginx | grep IP
IP: 10.1.1.23
IP: 10.1.1.22
IP: 10.1.1.21
IP: 10.1.1.24
可以确认,后端所有的节点都收到了请求。
网友评论