摘抄某博客

1.   Flannel

Flannel是为kubernetes设计的一个非常简洁的多节点三层网络方案,解决不同host上的容器互联问题,原理是为每个host分配一个subnet,容器从此subnet中分配IP,这些IP可以在host间路由,容器间无需NAT和port  mapping就可以跨主机通信,每个subnet都是从一个更大的IP池中划分的,flannel会在每个host上面运行一个守护进程flanneld,其职责就是从大池子中分配subnet,为了各个主机间共享信息,flannel用etcd存放网络配置、已分配的subnet、host的IP 等信息。

Flannel的节点间有三种通信方式:

1.  VXLAN:默认配置,利用内核级别的VXLAN来封装host之间传送的包。

2.  Host-gw:二层网络配置,不支持云环境,通过在host的路由表中直接创建到其他主机subnet的路由条目。

3.  Udp:通常用于debug

提示:Subnet在主机上的设置路径/run/flannel/subnet.env

2.   Calico

Calico是一个比较完整的项目,比较注重安全转为云环境设置,是一个三层的数据中心网络架构,无需依托overlay网络,经过生产环境的验证。

Calico在每个计算节点利用Linux Kernel实现了一个高效的vRouter来负责数据转发,而每个vRouter通过BGP协议负责把自己上运行的workload的路由信息向整个Calico网络内传播,小规模部署可以直接互联,大规模部署可通过指定的BGP route reflector来完成。

Calico基于iptables还提供了丰富而灵活的网络Policy,保证通过各个节点上的ACLs来提供workload的多租户隔离、安全组以及其他可达性限制等功能。

3.   NetworkPolicy

1)         kube-apiserver必须开启运行时extensions/v1beta1/networkpolicies,即设置启动参数:--runtime-config=extensions/v1beta1/networkpolicies=true

2)         kubelet必须启用cni网络插件,即设置启动参数:--network-plugin=cni

3)         kube-proxy必须启用iptables代理模式,这是默认模式,可以不用设置

4)         kube-proxy不得启用--masquerade-all,这会跟calico冲突

5)         安装calico组件

6)         Namespaces中添加

annotations:

net.beta.kubernetes.io/network-policy: |

{

"ingress": {

"isolation": "DefaultDeny"

}

}

实现多租户,namespaces之间隔离

Kubernetes网络方案 Flannel和calico的更多相关文章

  1. Kubernetes网络方案的三大类别和六个场景

    欢迎访问网易云社区,了解更多网易技术产品运营经验. 本文章根据网易云资深解决方案架构师 王必成在云原生用户大会上的分享整理. 今天我将分享个人对于网络方案的理解,以及网易云在交付 Kubernetes ...

  2. Kubernetes网络插件Flannel的三种工作模式

    跨主机通信的一个解决方案是Flannel,由CoreOS推出,支持3种实现:UDP.VXLAN.host-gw 一.UDP模式(性能差) 核心就是通过TUN设备flannel0实现(TUN设备是工作在 ...

  3. Kubernetes网络之Flannel工作原理

    目录 1.Docker网络模式 1.1 bridge网络的构建过程 1.2 外部访问 2.Kubernetes网络模式 2.1 同一个Pod中容器之间的通信 2.2 不同Pod中容器之间的通信 2.3 ...

  4. kubernetes网络之Flannel

    简介 Flannel是CoreOS团队针对Kubernetes设计的一个网络规划服务,简单来说,它的功能是让集群中的不同节点主机创建的Docker容器都具有全集群唯一的虚拟IP地址. 在默认的Dock ...

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

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

  6. k8s网络之Flannel网络

    k8s网络主题系列: 一.k8s网络之设计与实现 二.k8s网络之Flannel网络 三.k8s网络之Calico网络 简介 Flannel是CoreOS团队针对Kubernetes设计的一个网络规划 ...

  7. 浅谈K8S cni和网络方案

    此文已由作者黄扬授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 在早先的k8s版本中,kubelet代码里提供了networkPlugin,networkPlugin是一组接 ...

  8. DevOps专题|玩转Kubernetes网络

    Kubernetes无疑是当前最火热的容器编排工具,网络是kubernetes中非常重要的一环, 本文主要介绍一些相应的网络原理及术语,以及kubernetes中的网络方案和对比. Kubernete ...

  9. [转帖]Kubernetes CNI网络最强对比:Flannel、Calico、Canal和Weave

    Kubernetes CNI网络最强对比:Flannel.Calico.Canal和Weave https://blog.csdn.net/RancherLabs/article/details/88 ...

随机推荐

  1. Docker存储方式选型建议

    转自:https://segmentfault.com/a/1190000007168476 第一部分 问题诊断 事情从一次实施项目说起,我们需要帮助客户将他们的应用容器化并在数人云平台上发布此应用. ...

  2. Linux centos修改防火墙为iptables

    防火墙配置 CentOS 7默认使用的是firewall作为防火墙,这里改为iptables防火墙.  firewall操作: # service firewalld status; #查看防火墙状态 ...

  3. java的@PostConstruct注解

    javax.annotation 注释类型 PostConstruct @Documented @Retention(value=RUNTIME) @Target(value=METHOD) publ ...

  4. Spring源码分析(十七)循环依赖

    本文结合<Spring源码深度解析>来分析Spring 5.0.6版本的源代码.若有描述错误之处,欢迎指正. 实例化bean是一个非常复杂的过程,而其中比较难以理解的就是对循环依赖的解决, ...

  5. 【js】按下enter键禁止表单自动提交

    //enter键盘事件 document.onkeypress=function(){ if(event.keyCode==13){ return false; } }

  6. Mysql 5.7 windows安装 zip安装

    最近想安装一个本地数据库, 发现网上写的没一个能安装成功的, 各种蛋疼, 我还是自己写一个吧 参考链接: https://www.cnblogs.com/by330326/p/5608290.html ...

  7. python-docx操作word文件(*.docx)

    目录 基础操作 对象关系 添加样式 中文字体微软雅黑,西文字体Times New Roman 首行缩进 单独设置标题样式 设置超链接 参考文档 基础操作 from docx import Docume ...

  8. 函数的返回值是void

    #include <stdio.h> void sub(int x,int y,int z){ z=y-x; } void main() { int a=1,b=2,c=3; sub(10 ...

  9. GoLand Dep Integration Project

    Dep integration 标签(空格分隔): Go 1. 通过 GoLand 使用 dep integration 创建项目 参见 Dep integration 使用 dep integrat ...

  10. 用CBrother将excel中的数据转换为C语言头文件

    用CBrother将excel中的数据转换为C语言头文件 最近在工作中,产品这边总是要调整一些参数,而我们在这一块要求所有的配置必须用宏定义来做,因为不同型号直接硬编码写死在代码里,但是一但数量大了, ...