• Kubernetes 学习笔记 权威指南第七章


    1 Kubernetes对集群网络有如下要求。

    (1)所有容器都可以在不用NAT的方式下同别的容器通信。

    (2)所有节点都可以在不用NAT的方式下同所有容器通信,反之亦然。

    (3)容器的地址和别人看到的地址是同一个地址。

    原生的Docker网络目前还不能很好地支持这些要求

    处于不同命名空间中的网络栈是完全隔离的,彼此之间无法通信。如果想在两个命名空间之间通信,就必须有一个Veth设备对

    所有的网络设备(物理的或虚拟接口、桥等在内核里都叫作Net Device)都只能属于一个命名空间

    4  因为一个设备只能属于一个命名空间,所以转移后在这个命名空间中就看不到这个设备了

    Veth设备属于可以转移的设备,而很多其他设备如lo设备、vxlan设备、ppp设备、bridge设备等都是不可以转移的

    5 ip route list命令查看当前的路由表:

     在上面的例子代码中只有一个子网的路由,源地址是192.168.6.140(本机),目标地址在192.168.6.0/24网段的数据包都将通过eno16777736接口发送出去

    Netstat-rn是另一个查看路由表的工具:

     在它显示的信息中,如果标志是U,则说明是可达路由;如果标志是G,则说明这个网络接口连接的是网关,否则说明这个接口直连主机

    在Kubernetes管理模式下通常只会使用bridge模式,在bridge模式下,Docker Daemon第1次启动时会创建一个虚拟的网桥,默认的名称是docker0

    由Docker创建的每一个容器,都会创建一个虚拟的以太网设备(Veth设备对),其中一端关联到网桥docker0上,另一端使用Linux的网络命名空间技术,映射到容器内的eth0设备,然后从网桥的地址段内给eth0接口分配一个IP地址

    Docker网络在bridge模式下Docker Daemon启动时创建docker0网桥,并在网桥使用的网段为容器分配IP

    8 同一个pod内的容器之间可以通过localhost通信;同一个node上的pod之间可以通过ip直接通信;

    可以在网络层将Kubernetes的节点看作一个路由器

    10 服务的IP地址是在Kubernetes的Portal Network中分配的,而这个Portal Network的地址范围是我们在Kubmaster上启动API服务进程时,使用--service-cluster-ip-range=xx命令行参数指定的。这个IP段可以是任何段,只要不和docker0或者物理网络的子网冲突就可以

    11 使用tcpdump来进行网络抓包

    12 Kubernetes的网络模型假定了所有Pod都在一个可以直接连通的扁平网络空间中。
    13 Flannel可以搭建Kubernetes依赖的底层网络

  • 相关阅读:
    747. Largest Number Greater Than Twice of Others 最大数量大于其他两倍
    Python代码规范和命名规范
    Pycharm2018中DataBase的使用
    Pycharm新建文件css文件无后缀,html中无法正确引入
    Pycharm DataBase Navigator Plugins 使用
    Python怎么去写单元测试用例去测试hello world呢
    最近的电视剧推荐
    RobotFrameWork基本语法练习
    RobotFrameWork中使用自定义关键字
    Windows下同时安装了Python2与Python3时如何使用RobotFrameWork
  • 原文地址:https://www.cnblogs.com/testzcy/p/12968768.html
Copyright © 2020-2023  润新知