云原生

microk8s(八)service的负载均衡

2019-07-22  本文已影响0人  印随2018

找出一些证据,证明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

可以确认,后端所有的节点都收到了请求。

上一篇 下一篇

猜你喜欢

热点阅读