美文网首页
canal 网络的相关配置文件

canal 网络的相关配置文件

作者: 陈sir的知识图谱 | 来源:发表于2020-08-29 10:58 被阅读0次

    cannal 网络使用flannel 作为node之间的连接网络,同时使用calico 作为 网络policy 管理器

    flannel 解析

    flannel 架构图

    image.png

    报文发送路径为

    1. 容器直接使用目标容器的ip访问,默认通过容器内部的eth0发送出去。
      2.报文通过veth pair被发送到vethXXX。
      3.vethXXX是直接连接到虚拟交换机docker0的,报文通过虚拟bridge docker0发送出去。
    2. 查找路由表,外部容器ip的报文都会转发到flannel0虚拟网卡,这是一个P2P的虚拟网卡,然后报文就被转发到监听在另一端的flanneld。
    3. flanneld通过etcd维护了各个节点之间的路由表,把原来的报文UDP封装一层,通过配置的iface发送出去。
    4. 报文通过主机之间的网络找到目标主机。
    5. 报文继续往上,到传输层,交给监听在8285端口的flanneld程序处理。
    6. 数据被解包,然后发送给flannel0虚拟网卡。
    7. 查找路由表,发现对应容器的报文要交给docker0。
    8. docker0找到连到自己的容器,把报文发送过去。

    flannel 的相关配置和组件位置

    K8S 安装cannal后,会有三个cannal 的pod


    image.png

    通过

    kubectl describe pod cannal-xxxx 会发现其中一个是flannel的 容器。
    # 更快的方法是直接使用docker ps 
    
    image.png

    用 kubectl exec -it 或者docker exec -it 进入容器。可以发现配置文件路径如下

    1. /etc/kube-flannel
    2. /run/flannel
    image.png
    image.png

    Flannel启动过程解析:

    1. 从etcd中获取network的配置信息
    2. 划分subnet,并在etcd中进行注册
    3. 将子网信息记录到/run/flannel/subnet.env中

    Calico

    Calico 架构

    image.png

    calico包括如下重要组件:Felix,etcd,BGP Client,BGP Route Reflector。下面分别说明一下这些组件。

    1. Felix:主要负责路由配置以及ACLS规则的配置以及下发,它存在在每个node节点上。
    2. etcd:分布式键值存储,主要负责网络元数据一致性,确保Calico网络状态的准确性,可以与kubernetes共用;
    3. BGPClient(BIRD), 主要负责把 Felix写入 kernel的路由信息分发到当前 Calico网络,确保 workload间的通信的有效性;
    4. BGPRoute Reflector(BIRD), 大规模部署时使用,摒弃所有节点互联的mesh模式,通过一个或者多个 BGPRoute Reflector 来完成集中式的路由分发;

    原理


    image.png

    配置文件位置

    /etc/calico/confd/conf.d 主机里的位置 -----> /etc/calico/confd pod里的位置

    CNI 相关的文件夹

    1. /etc/cni/net.d/ 存放配置文件
    2. /opt/cni/bin 存放cni 插件的可执行文件
    3. /var/lib/cni 存放 K8S的网络说明文件

    相关文章

      网友评论

          本文标题:canal 网络的相关配置文件

          本文链接:https://www.haomeiwen.com/subject/bpdlsktx.html