kubernetes集成calico网络

1、物理环境
172.16.0.55 k8s1  master
172.16.0.57 k8s2  node
172.16.0.47 k8s3  node

[[email protected] ~]# docker ps |grep per
a394542f2340        alectolytic/netperf:latest                                   "sleep 36000000"         16 hours ago        Up 16 hours                             k8s_netperf.468d5a53_netperf-903608992-kbdqx_default_fe8c2f70-e21a-11e6-9e5d-0025904aabd6_101520d3
c951205fcdb5        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_cdb8ccde
6be27d13d319        networkstatic/iperf3:latest                                  "sleep 3600000"          16 hours ago        Up 16 hours                             k8s_iperf3.77255c12_iperf3-225180425-dkqlp_default_8586bf7c-e217-11e6-9e5d-0025904aabd6_2d2f3f61
0911410b49ff        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
[[email protected] ~]# 
[[email protected] ~]# docker inspect 6be27d13d319|grep Pid
            "Pid": 21333,
            "PidMode": "",
            "PidsLimit": 0,
[[email protected] ~]# 
[[email protected] ~]# mkdir /var/run/net
netreport/ net-snmp/  
[[email protected] ~]# mkdir /var/run/netns
[[email protected] ~]# 
[[email protected] ~]# ln -s /proc/21333/ns/net /var/run/netns/6be27d13d319
[[email protected] ~]# ip netns
6be27d13d319 (id: 4)
[[email protected] ~]# ip netns exec 6be27d13d319 ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> 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 forever
3: [email protected]: <BROADCAST,MULTICAST,UP,LOWER_UP> 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
You have mail in /var/spool/mail/root
[[email protected] ~]# 
[[email protected] ~]# ip netns exec 6be27d13d319 tcpdump -i any icmp 
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
[[email protected] ~]# ip netns exec 6be27d13d319 ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> 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 forever
3: [email protected]: <BROADCAST,MULTICAST,UP,LOWER_UP> 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
[[email protected] ~]# 
[[email protected] ~]# ip netns exec 6be27d13d319 ethtool -S eth0
NIC statistics:
     peer_ifindex: 29
[[email protected] ~]# 
[[email protected] ~]# 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 
[[email protected] ~]# 
[[email protected] ~]# ip addr
2: enp1s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> 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 forever
4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> 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 forever
5: [email protected]: <BROADCAST,MULTICAST,UP,LOWER_UP> 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 forever
6: [email protected]: <BROADCAST,MULTICAST,UP,LOWER_UP> 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 forever
29: [email protected]: <BROADCAST,MULTICAST,UP,LOWER_UP> 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架构

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

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

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

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

[[email protected] ~]# calicoctl config get asNumber

64512

[[email protected] ~]# calicoctl config get nodeToNodeMesh

on

[[email protected] ~]# calicoctl node status

时间: 2024-10-11 05:30:51

kubernetes集成calico网络的相关文章

Kubernetes之部署calico网络

部署calico网络 Calico组件: Felix:Calico agent     运行在每台node上,为容器设置网络信息:IP,路由规则,iptable规则等 etcd:calico后端存储 BIRD:  BGP Client: 负责把Felix在各node上设置的路由信息广播到Calico网络 , 通过BGP协议来着 BGP Route Reflector: 大规则集群的分级路由分发. calico: calico命令行管理工具 为Node节点部署calico网络,参照官方文档:htt

Kubernetes之部署calico网络Update

部署calico网络 Calico组件介绍: Felix:Calico agent 运行在每台node上,为容器设置网络信息:IP,路由规则,iptable规则等 etcd:calico后端存储 BIRD: BGP Client: 负责把Felix在各node上设置的路由信息广播到Calico网络( 通过BGP协议). BGP Route Reflector: 大规模集群的分级路由分发. calico: calico命令行管理工具 calico的部署: 参照官方文档:https://docs.p

Kubernetes &amp; Docker 容器网络终极之战(十四)

目录 一.单主机 Docker 网络通信 1.1.host 模式 1.2 Bridge 模式 1.3 Container 模式 1.4.None 模式 二.跨主机 Docker 网络通信分类 2.1 通信方案 2.2.容器网络规范 2.3.网络通信实现方案 2.4.Kubernetes 网络模型 三.跨主机 Docker 网络 3.1 Flannel 网络方案 3.2.Calico 网络方案 3.3.Canal 网络方案 3.4.Docker overlay 网络方案 3.5.Docker ma

Mesos+Kubernetes集成安装部署

因为Docker本身没有提供集群管理能力,对于docker集群一台台的登陆操作不太现实,因此需要引进容器集群的管理工具,主流的有mesosphere的marathon.谷歌的Kubernetes.docker社区的swarm,目前成熟度最高的是Kubernetes.Kubernetes是Google开源的容器集群管理系统,其提供应用部署.维护. 扩展机制等功能,利用Kubernetes能方便地管理跨机器运行容器化的应用,其主要功能如下: 使用Docker对应用程序包装(package).实例化(

Calico网络策略实践

因为Kubernetes官方用的flannel无法实现多租户环境下的网络隔离,建立起来的pod之间实际可以相互访问,而Calico可以实现,因此周末找个时间试了一下大概的过程. 前面的kubernetes安装掠过 Calico安装 下载yaml文件 http://docs.projectcalico.org/v2.3/getting-started/kubernetes/installation/hosted/calico.yaml http://docs.projectcalico.org/v

calico 网络流量 过程 分析

1.calico node 容器在kubernetes中以DaemonSet 的方式运行,容器的网络模式为hostNetwor,与host共享网络栈,拥有相同的Ip和hostname 2.查看某个pod:[[email protected] ~]# kubectl get pods -o wide -n kube-system |grep -i tiller tiller-deploy-5dfffddb8d-n4vp6  1/1        Running  0   3d   10.233.1

k83 calico 网络策略

常见的CNI网络插件包含以下几种: Flannel:为Kubernetes提供叠加网络的网络插件,基于TUN/TAP隧道技术,使用UDP封装IP报文进行创建叠 加网络,借助etcd维护网络的分配情况,缺点:无法支持网络策略访问控制.Calico:基于BGP的三层网络插件,也支持网络策略进而实现网络的访问控制:它在每台主机上都运行一个虚拟路由,利用Linux内核转发网络数据包,并借助iptables实现防火墙功能.实际上Calico最后的实现就是将每台主机都变成了一台路由器,将各个网络进行连接起来

如何部署 Calico 网络?- 每天5分钟玩转 Docker 容器技术(67)

Calico 是一个纯三层的虚拟网络方案,Calico 为每个容器分配一个 IP,每个 host 都是 router,把不同 host 的容器连接起来.与 VxLAN 不同的是,Calico 不对数据包做额外封装,不需要 NAT 和端口映射,扩展性和性能都很好. 与其他容器网络方案相比,Calico 还有一大优势:network policy.用户可以动态定义 ACL 规则,控制进出容器的数据包,实现业务需求. 实验环境描述 Calico 依赖 etcd 在不同主机间共享和交换信息,存储 Cal

如何定制 Calico 网络 Policy - 每天5分钟玩转 Docker 容器技术(70)

Calico 默认的 policy 规则是:容器只能与同一个 calico 网络中的容器通信.本节讨论如何定制 policy. calico 能够让用户定义灵活的 policy 规则,精细化控制进出容器的流量,下面我们就来实践一个场景: 创建一个新的 calico 网络 cal_web 并部署一个 httpd 容器 web1. 定义 policy 允许 cal_net2 中的容器访问 web1 的 80 端口. 首先创建 cal_web. docker network create --driv