kubernetes网络通信方式有:

  1. 容器间的通信 : pod内的容器通信 通过(lo)设备
  2. Pod之间的通信 :pod IP <-----> pod IP ,K8S 要求所有的 pod 都必须直接通信
  3. Pod与Service之间的通信 :podIP <-----> ClusterIP
  4. Service与集群外部的通信 ClusterIP <-----> 集群外部

CNI插件:

  1. flannel
  2. calico
  3. canel
  4. kube-route

解决方案:

  1. 虚拟网桥
  2. 多路复用 MacVLAN
  3. 硬件交换 SR-IOV

Flannel

Flannel本身是一个框架,真正提供网络功能是他的后端实现。目前支持三种后端实现:

  1. VXLAN
  2. host-gw
  3. UDP

查看 flannel

kubectl get ds -n kube-system -o wide

查看对应的 configmap

kubectl get configmap -n kube-system

VXLAN+DriectRouting 模式

VXLAN+DriectRouting是首先采用直接路由的方式,如果不可以就使用VXLAN的方式。

Flannel的默认配置是VXLAN,但是我们可以配置多个插件协作,接下来我们就使用VXLAN+DriectRouting这两个插件协作。

cd ~ ; mkdir flannel
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml # 添加一个配置
vi kube-flannel.yml
...
net-conf.json: |
{
"Network": "10.244.0.0/16",
"Backend": {
"Type": "vxlan", # 注意,这里有个, 逗号
"Directrouting": true # 启动 Directrouting
}
} # 查看 ds
kubectl get ds -n kube-system # 删除重建 flannel
kubectl delete ds kube-flannel-ds-amd64 -n kube-system kubectl get pods -n kube-system -w
kubectl apply -f kube-flannel.yml # 在 node1,node2 上执行 ip route show ,这里以 node1 为例子
[root@node1 ~]# ip route show
default via 192.168.0.254 dev eth0 proto static metric 100
10.244.0.0/24 via 192.168.0.205 dev eth0
10.244.1.0/24 dev cni0 proto kernel scope link src 10.244.1.1
10.244.2.0/24 via 192.168.0.207 dev eth0 # 网络到达 node2 使用 eth0 网卡即成功
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.206 metric 100

K8S flannel的更多相关文章

  1. K8s + Flannel 网络架构图

    这是Flannel官网给出的网络架构图 这是通过自己的理解画的逻辑结构图 查看bridge [root@node01 ~]# brctl show bridge name bridge id STP ...

  2. K8S Flannel网络插件

    0.前言 参考文档:https://github.com/containernetworking/cni Pod网络插件,为了实现Pod网络而需要的插件.组件.由于Kubernetes通过开放的CNI ...

  3. docker k8s 1.3.8 + flannel

    docker k8s + flannel kubernetes 是谷歌开源的 docker 集群管理解决方案. 项目地址: http://kubernetes.io/ 测试环境: node-1: 10 ...

  4. 基于Kubernetes(k8s)网络方案演进

    VIP PaaS在接近两年时间里,基于kubernetes主要经历四次网络方案的变迁: 1. kubernetes + flannel 2. 基于Docker libnetwork的网络定制 3. k ...

  5. 容器中跨主机的网络方案-flannel

    容器中的网络是建立docker集群的重要内容. 本文将介绍如何用flannel实现容器的多节点互通. 下图是flannel的实现原理,摘自: http://docker-k8s-lab.readthe ...

  6. 利用听云Server和听云Network实测Kubernetes和Mesos在高并发下的网络性能

    文章出自:听云博客 随着公司业务的不断增长,我们的应用数量也有了爆发式增长.伴随着应用爆发式的增长,管理的难度也随之加大.如何在业务爆发增长的同时快速完成扩容成了很大的挑战.Docker的横空出世恰巧 ...

  7. kubernetes 1.3 的安装和集群环境部署

    简介: Docker:是一个开源的应用容器引擎,可以为应用创建一个轻量级的.可移植的.自给自足的容器. Kubernetes:由Google开源的Docker容器集群管理系统,为容器化的应用提供资源调 ...

  8. Kubernetes 集群安装部署

    etcd集群配置 master节点配置 1.安装kubernetes etcd [root@k8s ~]# yum -y install kubernetes-master etcd 2.配置 etc ...

  9. 【爬坑系列】之kubernetes环境搭建:二进制安装与镜像安装

    准备: 网上教如何编译与安装kubernetes的教程很多,需要提前准备的也很多,比如关闭selinux,防火墙啦....但有一点一定要注意,编译kubernetes源码时要求有2G内存,这个可是实打 ...

随机推荐

  1. ubuntu18.04安装redis

    首先更新源 sudo apt-get update 安装命令: sudo  apt-get install redis-server 查看tcp 连接 netstat -ap | grep  6379 ...

  2. 查看windows到期时间

        查看windows到期时间    Slmgr.vbs  -xpr

  3. Eclipse 修改自动补全触发器只能输入四个字符为多个字符

    如果eclipse中的[auto activation triggers for java]自动补全触发器这个位置的文本框有时候只能输入4个字符, 可以通过修改配置文件的方法实现,具体操作步骤如下: ...

  4. MySql必备技能 不会的赶紧get一下 可以说很详细了

    1.Mysql服务 mysql服务如何开启: 下载了mysql数据库你的服务中会有mysql服务. 1.1: 1.2: 2.使用sql语句进行 建库.建表.等操作. 2.1:使用sql语句进行创建数据 ...

  5. MD5( 信息摘要算法)的概念原理及python代码的实现

    简述: message-digest algorithm 5(信息-摘要算法).经常说的“MD5加密”,就是它→信息-摘要算法. md5,其实就是一种算法.可以将一个字符串,或文件,或压缩包,执行md ...

  6. python 安装numpy遇到无法卸载的解决办法

    python 安装模块numpy遇到无法卸载的情况的解决办法 python在安装seaborn的时候,需要更新numpy模块,但是更新失败,输出下面的错误: Cannot uninstall 'num ...

  7. 树莓派配置wifi链接

    使用树莓派链接网络是必然的,这里讲一讲如何连接到wifi. 扫描WIFI sudo iwlist wlan0 scan 扫描后得到以下结果 这里的“ESSID”是无线网的名称. 添加有密码的WIFI网 ...

  8. ubuntu16.04 离线安装nginx

    场景描述: 客户生产环境服务器,内网隔离无法访问互联网,需要准备好相应的安装包,离线部署. 服务器&软件包版本: 环境: ubunt16.04 gcc-4.8.4 包: nginx-1.8.1 ...

  9. 【云服务器部署】---Linux下安装nginx

    [云服务器部署]---Linux下安装nginx 之前两篇,分别讲了:Linux下安装MySQL  和  springboot项目部署云服务器 nginx安装也是挺简单的.具体步骤如下: 第一步,下载 ...

  10. 自动化运维Ansible安装篇

    Ansible自动化工具之--部署篇 ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabric)的优点,实现了 ...