K8S简历(十六)

K8S是没网络功能的要使K8S拥有网络功能要使用第三方的CNI插件实现,第三方插件有很多比如:flannel,calico,canel等等,其中flannel部署简单但没有网络控制的功能,calico部署比较繁琐但功能强大,cannel二者的综合。今天我们就从flannel下手了解K8S的网络插件。

K8S网络通信:

K8S需要用到网络的情况大概有4种:

  1. 容器间通信同一个Pod中的多个容器间的通信(lo);
  2. Pod和Pod之间的通信;
  3. Pod和service间的通信;
  4. servic与集群外客户端通信。

flannel下载:

https://github.com/coreos/flannel

下载命令

flannel:

flannel拥有三种工作模式:VxLAN,Host-gw,UDP
其中UDP因为比较古老而且性能很差所以现在不使用。

host-gw:

Host-gw的工作原理,其实就是在宿主机上,添加一条到达每个flannel子网的路由,这条路由的下一跳即网关就是相对应的flannel子网所在的“主机”。这些路由规则是flanneld根据容器部署的场景创建和更新的。
Host-gw是flannel中性能最好的模式,但有一定的局限性,宿主机与目标主机之间不能有其他网络。

VxLan:

VxLAN是flannel默认使用的工作模式,他的缺点就是开销会Host-gw但没有局限性。
VxLAN工作原理:



VxLAN

可以从图中看出他会在原数据包外添加额外包头来实现通信。
需要注意的是VxLAN还可以动态使用Host-gw。

flannel configmap字段说明:

  1. Network:用于为Pod配置网络功能;
    例子:10.244.0.0/16 =>
    master:10.244.0.0/24
    node:10.244.1.0/24
  2. SubnetLen:把Network切分子网各节点使用时,使用多长的掩码进行切分,默认为24为(切分效果如上个例子);
  3. SubnetMax:最大可以使用的网络地址;
  4. SubnetMin:最小可以使用的网络地址;
  5. Bckend下的Type:设置工作模式,如果需要虽然动态VxLan
"Backend": {
    "Type": "vxlan",
          "Directroutind": true
}

你可能感兴趣的:(K8S简历(十六))