1、Pod网络:

在K8S集群里,多个节点上的Pod相互通信,要通过网络插件来完成,比如 Calico网络插件。 使用kubeadm初始化K8S集群时,有指定一个参数--pod-networkcidr=10.10.0.0/16 它用来定义Pod的网段。 而我们在配置Calico的时候,同样也有定义一个CALICO_IPV4POOL_CIDR的参 数,它的值同样也是Pod的网段..。常见的网络插件calico, 它的全称是 Container Network Interface,即容器网络的 API 接口。 CNI本身并不能提供网络服务,它只是定义了对容器网络进行操作和配置的规 范。

安装calico网络:

curl  -O  https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/calico.yaml

修改文件:

下载完后还需要修改⾥⾯定义 Pod ⽹络(CALICO_IPV4POOL_CIDR),与前⾯ kubeadm init 的 --podnetwork-cidr 指定的⼀样
vi  calico.yaml
vim calico.yaml
# - name: CALICO_IPV4POOL_CIDR
# value: "10.96.0.0/16"
# 修改为:
- name: CALICO_IPV4POOL_CIDR
  value: "10.10.0.0/16"
  
  部署
kubectl apply -f calico.yaml


Flannel也是一个CNI插件,它的功能跟Calico一样,为K8S集群中的Pod提供网络支撑。

Flannel的设计目的就是为集群中的所有节点重新规划IP地址的使用规则,从而使得不同节点上的Pod能够获得“同属一个内网”且”不重复的”IP地址,并让属于不同节点上的Pod能够直接通过内网IP通信。简单来说,它的功能是让集群中的不同节点主机创建的Pod都具有全集群唯一的虚拟IP地址。

VxLAN模式:

VxLAN的设计思想是: 在现有的三层网络之上,“覆盖”一层虚拟的、由内核VxLAN模块负责维护的二层网络,使得连接在这个VxLAN二层网络上的“主机”(虚拟机或容器都可以),可以像在同一个局域网(LAN)里那样自由通信。 为了能够在二层网络上打通“隧道”,VxLAN会在宿主机上设置一个特殊的网络设备作为“隧道”的两端,叫VTEP:VxLAN Tunnel End Point(虚拟隧道端点)


VXLAN是Flannel默认和推荐的模式。当我们使用默认配置安装Flannel时,它会为每个节点分配一个24位子网,并在每个节点上创建两张虚机网卡: cni0 和 flannel.1 。

  • cni0 是一个网桥设备,节点上所有的Pod都通过veth pair的形式与cni0相连。 
  • flannel.1 则是一个VXLAN类型的设备,充当VTEP的角色,实现对VXLAN报文的封包解包。

fannel的安装:

wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
修改vi  kube-fannel.yaml
env:
- name: "FLANNEL_NETWORK"
  value: "10.244.0.0/16"   ##改为自己实际使用的
  kubectl apply -f kube-flannel.yml

kubenetes-2.4_IP