1、物理环境172.16.0.55 k8s1  master172.16.0.57 k8s2  node172.16.0.47 k8s3  node[root@k8s2 ~]# docker ps |grep pera394542f2340        alectolytic/netperf:latest                                   "sleep 36000000"         16 hours ago        Up 16 hours                             k8s_netperf.468d5a53_netperf-903608992-kbdqx_default_fe8c2f70-e21a-11e6-9e5d-0025904aabd6_101520d3c951205fcdb5        gcr.io/google_containers/pause-amd64:3.0                     "/pause"                 16 hours ago        Up 16 hours                             k8s_POD.d8dbe16c_netperf-903608992-kbdqx_default_fe8c2f70-e21a-11e6-9e5d-0025904aabd6_cdb8ccde6be27d13d319        networkstatic/iperf3:latest                                  "sleep 3600000"          16 hours ago        Up 16 hours                             k8s_iperf3.77255c12_iperf3-225180425-dkqlp_default_8586bf7c-e217-11e6-9e5d-0025904aabd6_2d2f3f610911410b49ff        gcr.io/google_containers/pause-amd64:3.0                     "/pause"                 16 hours ago        Up 16 hours                             k8s_POD.d8dbe16c_iperf3-225180425-dkqlp_default_8586bf7c-e217-11e6-9e5d-0025904aabd6_c86ee5f0[root@k8s2 ~]# [root@k8s2 ~]# docker inspect 6be27d13d319|grep Pid            "Pid": 21333,            "PidMode": "",            "PidsLimit": 0,[root@k8s2 ~]# [root@k8s2 ~]# mkdir /var/run/netnetreport/ net-snmp/  [root@k8s2 ~]# mkdir /var/run/netns[root@k8s2 ~]# [root@k8s2 ~]# ln -s /proc/21333/ns/net /var/run/netns/6be27d13d319[root@k8s2 ~]# ip netns6be27d13d319 (id: 4)[root@k8s2 ~]# ip netns exec 6be27d13d319 ip addr1: lo: 
 mtu 65536 qdisc noqueue state UNKNOWN     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00    inet 127.0.0.1/8 scope host lo       valid_lft forever preferred_lft forever    inet6 ::1/128 scope host        valid_lft forever preferred_lft forever3: eth0@if29: 
 mtu 1500 qdisc noqueue state UP     link/ether b2:2f:eb:0f:9d:04 brd ff:ff:ff:ff:ff:ff link-netnsid 0    inet 192.168.167.84/32 scope global eth0       valid_lft forever preferred_lft forever    inet6 fe80::b02f:ebff:fe0f:9d04/64 scope link        valid_lft forever preferred_lft foreverYou have mail in /var/spool/mail/root[root@k8s2 ~]# [root@k8s2 ~]# ip netns exec 6be27d13d319 tcpdump -i any icmp tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
[root@k8s2 ~]# ip netns exec 6be27d13d319 ip addr1: lo: 
 mtu 65536 qdisc noqueue state UNKNOWN     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00    inet 127.0.0.1/8 scope host lo       valid_lft forever preferred_lft forever    inet6 ::1/128 scope host        valid_lft forever preferred_lft forever3: eth0@if29: 
 mtu 1500 qdisc noqueue state UP     link/ether b2:2f:eb:0f:9d:04 brd ff:ff:ff:ff:ff:ff link-netnsid 0    inet 192.168.167.84/32 scope global eth0       valid_lft forever preferred_lft forever    inet6 fe80::b02f:ebff:fe0f:9d04/64 scope link        valid_lft forever preferred_lft forever[root@k8s2 ~]# [root@k8s2 ~]# ip netns exec 6be27d13d319 ethtool -S eth0NIC statistics:     peer_ifindex: 29[root@k8s2 ~]# [root@k8s2 ~]# ip route default via 172.16.0.254 dev enp1s0f0  proto static  metric 100 172.16.0.0/24 dev enp1s0f0  proto kernel  scope link  src 172.16.0.57  metric 100 172.17.0.0/16 dev docker0  proto kernel  scope link  src 172.17.0.1 192.168.23.192/26 via 172.16.0.49 dev enp1s0f0  proto bird 192.168.86.0/26 via 172.16.0.55 dev enp1s0f0  proto bird blackhole 192.168.167.64/26  proto bird 192.168.167.84 dev caliab5c3cbfda4  scope link 192.168.167.85 dev caliec347e5f7b0  scope link 192.168.167.87 dev cali59ee912b1e2  scope link 192.168.167.124 dev calia1345165869  scope link 192.168.167.125 dev calif8ea0c0f011  scope link [root@k8s2 ~]# [root@k8s2 ~]# ip addr2: enp1s0f0: 
 mtu 1500 qdisc mq state UP qlen 1000    link/ether 00:25:90:4a:ad:ea brd ff:ff:ff:ff:ff:ff    inet 172.16.0.57/24 brd 172.16.0.255 scope global enp1s0f0       valid_lft forever preferred_lft forever    inet6 2001:470:fb3c:0:225:90ff:fe4a:adea/64 scope global mngtmpaddr dynamic        valid_lft 2455832sec preferred_lft 468632sec    inet6 fe80::225:90ff:fe4a:adea/64 scope link        valid_lft forever preferred_lft forever4: docker0: 
 mtu 1500 qdisc noqueue state DOWN     link/ether 02:42:ae:fa:da:33 brd ff:ff:ff:ff:ff:ff    inet 172.17.0.1/16 scope global docker0       valid_lft forever preferred_lft forever5: calia1345165869@if3: 
 mtu 1500 qdisc noqueue state UP     link/ether ce:b2:25:23:f9:87 brd ff:ff:ff:ff:ff:ff link-netnsid 0    inet6 fe80::ccb2:25ff:fe23:f987/64 scope link        valid_lft forever preferred_lft forever6: calif8ea0c0f011@if3: 
 mtu 1500 qdisc noqueue state UP     link/ether de:81:bc:83:0d:b5 brd ff:ff:ff:ff:ff:ff link-netnsid 1    inet6 fe80::dc81:bcff:fe83:db5/64 scope link        valid_lft forever preferred_lft forever29: caliab5c3cbfda4@if3: 
 mtu 1500 qdisc noqueue state UP     link/ether 76:b0:6b:12:ef:4d brd ff:ff:ff:ff:ff:ff link-netnsid 4    inet6 fe80::74b0:6bff:fe12:ef4d/64 scope link        valid_lft forever preferred_lft forever

以如下两个容器为例来说明容器跨主机节点的通讯

iperf3-225180425-00psw (容器1)    192.168.23.194   k8s3

iperf3-225180425-dkqlp (容器2)   192.168.167.84   k8s2

对端物理主机

calico架构

FelixCalico Agent,跑在每台需要运行Workload的节点上,主要负责配置路由及ACLs等信息来确保Endpoint的连通状态;

etcd,分布式键值存储,主要负责网络元数据一致性,确保Calico网络状态的准确性;

BGP ClientBIRD, 主要负责把Felix写入Kernel的路由信息分发到当前Calico网络,确保Workload间的通信的有效性;

BGP Route ReflectorBIRD),大规模部署时使用,摒弃所有节点互联的 mesh 模式,通过一个或者多个BGP Route Reflector来完成集中式的路由分发。

 

[root@k8s1 ~]# calicoctl config get asNumber

64512

[root@k8s1 ~]# calicoctl config get nodeToNodeMesh

on

 

[root@k8s1 ~]# calicoctl node status