• docker容器网络方案原理


    容器跨主机网络方案

    1. docker 原生的 overlay 和 macvlan

    2. 第三方方案:常用的包括 flannel、weave 和 calico

    CNM

         Container Network Model (CNM)   容器网络模型

         

    libnetwork

        libnetwork 是 docker 容器网络库  最核心的内容是其定义的 Container Network Model (CNM)这个模型对容器网络进行了抽象  由以下三类组件组成

        Sandbox

           Sandbox 是容器的网络栈,包含容器的 interface、路由表和 DNS 设置. Linux Network Namespace 是 Sandbox 的标准实现.Sandbox 可以包含来自不同 Network 的 Endpoint

           Sandbox就是相当于一个独立的网络命名空间     每个容器都有一个独立的Sandbox

        Endpoint     

            Endpoint 的作用是将 Sandbox 接入 Network. Endpoint 的典型实现是 veth pair  后面我们会举例. 一个 Endpoint 只能属于一个网络,也只能属于一个 Sandbox

            Endpoint  相当于一根虚拟的网线

        Network

             Network 包含一组 Endpoint,同一 Network 的 Endpoint 可以直接通信。Network 的实现可以是 Linux Bridge、VLAN 等

             Network  相当于一个交换机

     网络结构分析

      

    1. 两个 Network:默认网络 “bridge” 和自定义网络 “my_net2”。实现方式是 Linux Bridge:“docker0” 和 “br-5d863e9f78b6”

    2. 三个 Enpoint,由 veth pair 实现,一端(vethxxx)挂在 Linux Bridge 上,另一端(eth0)挂在容器内

    3. 三个 Sandbox,由 Network Namespace 实现,每个容器有自己的 Sanbox

    网络IO

        

       容器网络模式

       1.桥接
          容器创建的虚拟网卡连接到docker0网桥

        2.host模式
          新创建的容器和宿主机共享一个网络

        3.容器模式
           新创建的容器和已经存在的一个容器共享网络空间 k8s的pod机制

       4.none模式

       5.overlay模式
          overlay模式会在宿主机网络上加一个容器的虚拟服务网关
          宿主机上的所有容器都是通过这个网关和外面进行通信

      MACvlan物理网卡的混杂模式
           当物理网卡工作在混杂模式下,物理网卡的MAC地址会失效。到达网卡的所有数据包都会被网卡接收

        

        

  • 相关阅读:
    在HttpHandlers (ASHX files)中使用Session
    EventCalendar控件源码和ASP.NET 2.0 Beta 2 Starter Kits中可能遇到的问题
    C# 获取数据库中某个某个表的创建脚本[原创]
    Linq 合并多个查询条件
    自定义WCF RIA Services 超时时间
    也来学学插件式开发续利用MEF
    HTML5程序设计 Geolocation API
    反射实体模型生成Oracle SQL脚本
    Entity Framework With Oracle
    Entity Framework Code First在Oracle下的伪实现
  • 原文地址:https://www.cnblogs.com/yxh168/p/9626287.html
Copyright © 2020-2023  润新知