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. 小程序页面跳转传参-this和that的区别-登录流程-下拉菜单-实现画布自适应各种手机尺寸

    小程序页面跳转传参 根目录下的 app.json 文件 页面文件的路径.窗口表现.设置网络超时时间.设置多 tab { "pages": [ "pages/index/i ...

  2. 前端页面使用emoji

    概述 最近在工作中遇到了移动端emoji的显示问题,于是查找了一些相关资料,试验了一番,把心得记录下来,供以后开发时参考,相信对其他人也有用. 参考资料: 为网站添加emoji表情的支持 思路 在页面 ...

  3. 卷积神经网络CNN的原理(二)---公式推导

    卷积神经网络与普通神经网络的区别在于,卷积神经网络包含多个由卷积层和池化层构成的特征抽取器.在卷积神经网络的卷积层中,一个神经元只与部分邻层神经元连接.在CNN的一个卷积层中,通常包含若干个特征平面( ...

  4. ubuntu 16.04 下安装NVDIA的库(CUDA+CUDNN)

    立志学习神经网络的同学,为了让它能够跑快一点,估计英伟达的GPU是要折腾一番的. 首先看一下什么是CUDA ? CUDA(Compute Unified Device Architecture),是显 ...

  5. 面试题:两种方法计算n!

    直接上代码package com.face.test; public class Test { /** * 面试题:递归方法计算n! */ @org.junit.Test public void di ...

  6. 非业务 Oracle SQL 语句备份

    1.创建一个将 Oracle 生成的 GUID 格式化为标准的 GUID 的函数 2.在 PLSQL 中测试并输出语句异常的语句块 3.在查询语句中日期的一种特殊表示方法 4.利用 ROWNUM 做分 ...

  7. DRDS SQL 审计与分析——全面洞察 SQL 之利器

    背景 数据库存储着系统的核心数据,其安全方面的问题在传统环境中已经成为泄漏和被篡改的重要根源.而在云端,数据库所面临的威胁被进一步的放大.因此,对云数据库的操作行为尤其是全量 SQL 执行记录的审计日 ...

  8. Linux软件包管理之yum在线管理

    目录 1.yum在线管理 2.网络 yum 源 3.光盘 yum 源搭建步骤 ①.挂载光盘 ②.让网络 yum 源失效 ③.修改光盘yum源文件 ④.输入yum list 可以查看光盘yum源里面的软 ...

  9. python使用多线程

    threading 模块支持守护线程, 其工作方式是:守护线程一般是一个等待客户端请求服务的服务器. 如果把一个线程设置为守护线程,进程退出时不需要等待这个线程执行完成. 如果主线程准备退出时,不需要 ...

  10. Mybatis的SqlSession运行原理

    前言 SqlSession是Mybatis最重要的构建之一,可以简单的认为Mybatis一系列的配置目的是生成类似 JDBC生成的Connection对象的SqlSession对象,这样才能与数据库开 ...