k8s  网络

1、同一个pod的多个容器,互相访问,会共享一个linux的协议站pause(同一网络命名空间),通过localhost\回环网卡就可以
    2、同一主机下的不同pod,是通过同一主机的doker0网桥转发,同一网桥下的不通子网而已,不需要flannel0
    3、跨主机下的不同pod通信:
            首先在node主机上会安装一个Flanneld守护进程,并且这个进程会监听一个端口,这个端口就是用于后期转发数据包的,
            flanneld这个进程启动以后,它会开启一个网桥叫flannel0,这个网桥专门收集docker0转发出来的数据报文,可以理解为
            钩子函数,docker0会分配具体的IP到对应的pod上。
            首先Pod的源地址和对方pod的目标地址不在同一网段,所以Pod会将自己的源地址发送到自己的网关,也就是docker0,
            docker0上会有钩子函数,把数据包抓到flannel0上,flannel0上会有一堆路由表记录(是从etcd上取的),然后flannel0
            把数据包给flanneld,到flanneld后会对数据报文进行封装,首先是把node主机的源地址和目标地址进行第一次封装(第一次封装知道对方的node ip信息就是根据etcd里维护的路由表),
            通过udp封装(更快),然后在此基础上进行第二次封装,把pod的源地址和目标地址包上,由于里层封装的写了目标的node主机
            IP,会被目标的node主机上的flanneld截获(根据端口),截获以后会进行拆封,拆封以后会转发到flannel0,然后flannel0会
            转发到docker0,然后根据拆封里面的pod目标IP找到机器。
            
pod和service的网络: 老版是通过iptables,现在一般是lvs,效率更高

pod里的容器上网,通过snat动态转换实现
out  network访问pod,就是通过service来实现