Kubenetes-CNI-Flannel-调研

部署

平台:virtualBox

工具:vagrant

版本:kubenetense(v1.21.2),docker(20.10.7);脚本:Vagrantfile

工具:kubeadm

集群配置(单网卡,单控):

控制点:192.168.10.111

计算A:192.168.10.112

计算B:192.168.10.113

计算C:192.168.10.114

Docker的网络模式

四个基本模型

  • host模式:容器和宿主机共享Network namespace

    场景:宿主机网络插件(例如 ovs网络组件,flannel、weave等K8S网络插件),日志收集,系统监控

  • container模式:容器和另外一个容器共享Network namespace(例如kubernetes中的pod就是多个容器共享一个Network namespace)

  • none模式:容器有独立的Network namespace,但并没有对其进行任何网络设置,如分配veth pair 和网桥连接,配置IP等。(例如没有网络服务或无需联网的应用)

  • bridge模式:默认为该模式(普通docker容器,或者kubenetes的pause容器)

跨主机通信

在docker的默认网络模型下,是不能实现跨节点通信的,所以需要跨主机通信的解决方案

docker原生方案

  • macvlan 需要linux内核支持(Linux内部版本是v3.9–3.19和4.0+)虚拟物理网卡成多个虚拟网卡

实现方法

  1. 配置网卡为混杂模式

ip link set eth2 promisc on
  1. 创建macvlan驱动

docker network create -d macvlan --subnet 172.16.100.0/24 --gateway 172.16.100.1 -o parent=eth2 macv
  1. 创建容器并且指定地址

docker run -itd --name box1 --ip 172.16.100.10 --network macv busybox

  • Tunnel(overlay)方式, 通过在主机之间建立隧道的方式

    • NAT方式,利用宿主机的IP和Iptables来达到容器,主机之间的通信

      1. 在配置文件daemon.json添加bip字段

      [root@DockerA ~]# cat /etc/docker/daemon.json
      {
          "registry-mirrors": ["https://owb6brqx.mirror.aliyuncs.com"],
          "exec-opts": ["native.cgroupdriver=systemd"],
          "graph": "/tol/docker-data",
          "bip": "10.0.10.1/24"
      }
      1. 添加路由

      [root@DockerA ~]# route add -net 10.0.11.0/24 gw 192.168.10.122

      第三方方案

      • flannel 是用于组建容器间网络的工具,用于解决跨主机的docker containers之间的连通性问题

      • weave 创建一个虚拟网络,连接部署在多个主机上的Docker容器。对于应用容器来说,Weave建立的网络类似于一个巨大的以太网交换机,所有容器都连接在一起,并且可以轻松地相互访问服务。

      • calico 是一个开源的网络和网络安全解决方案,适用于容器、虚拟机和基于主机的工作负载

      Kubenetes中需要解决网络问题

      • 容器间通信:同一个Pod内的多个容器间的通信

      • pod间通信:pod间通信k8s要求他们之间的通信必须是所见即所得,即一个pod的IP到另一个pod的IP之间通信不经过任何NAT转换,要直达

      • pod与service通信:即pod IP 与cluster IP之间直接通信,他们其实不在同一个网段,但是他们通过我们本地的IPVS或者iptables规则能实现通信,而且我们知道1.11上的kube-proxy也支持IPVS类型的service,只不过我们以前没有激活过。即pod IP与cluster IP通信是通过系统上已有的iptables或ipvs规则来实现的,这里特别提醒一下ipvs取代不了iptables&#x

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值