Docker系列(十二):Kubernetes的分布式网络实践
tip:本节课的学习视频没有找到,所以有的地方可能不是很清晰。
可选的几种网络方案
openvswitch

是一种主流的虚拟化大二层技术
灵活 对现有物理网络没要求 业界主流
软件封装导致性能低 复杂度比较高 Trouble Shooting难
路由技术

一种结合了Linux路由功能的“正统”网络技术
常规路由技术
使用传统网络技术
简单
高性能
与现有网络融为一体
灵活性低
新设计的Flannel

Flannel网络方案详解

原始数据是在起始节点的 Flannel服务上进行UDP封装 的,投递到目的节点后就被 另一端的Flannel服务还原成 了原始的数据包,两边的 Docker服务都感觉不到这个 过程的存在。
用Etcd存储子网拓扑与路由表 怎么确保每个Node上的Dockers引擎用不同的IP地址段,这个事情看起来很诡异,但真相十分简单。其实只是
单纯的因为Flannel通过Etcd分配了每个节点可用的IP地址段后,偷偷的修改了Docker的启动参数,见下图。

这个IP范围是由Flannel自动分配的,由Flannel通过保存在Etcd服务中的记录确保它们不会重复。

需要在每台Node上都安装flannel。flannel软件的下载地址为 https://github.com/ coreos/ flannel/releases。将下载的压缩包 flannel--linux-amd64.tar.gz解压,把二进制文件 flanneld和mk-docker-opts.sh复制到/usr/bin(或其他PATH环境变 量中的目录),即可完成对flannel的安装。
使用systemd系统为例对flanneld服务进行配置。 编辑服务配置文件/usr/lib/systemd/system/flanneld.service:
[Unit]
Description=Flanneld overlay address etcd agent
After=network.target
Before=docker.service
[Service]
Type=notify
EnvironmentFile=/etc/sysconfig/flanneld EnvironmentFile=-/etc/sysconfig/docker-network
ExecStart=/usr/bin/flanneld -etcd-endpoints=${FLANNEL_ETCD} $FLANNEL_OPTIONS [Install]
RequiredBy=docker.service
WantedBy=multi-user.target
编辑配置文件/etc/sysconfig/flanneld,设置etcd的URL地址(Master上安装的etcd节点地址)
FLANNEL_ETCD="http://192.168.1.128:4001"
在启动flannel之前,需要在etcd中添加一条网络配置记录,这个配置将用于 flannel分配给每个Docker的虚拟IP地址段。
# etcdctl set /coreos.com/network/config '{ "Network": "10.1.0.0/16" }'
由于flannel将覆盖docker0网桥,所以如果Docker服务已启动,则停止 Docker服务,然后systemctl restart flanneld
在每个节点上执行:
sudo mk-docker-opts.sh -i
source /run/flannel/subnet.env
sudo rm /var/run/docker.pid
sudo ifconfig docker0 ${FLANNEL_SUBNET}
重启动一次Docker,这样配置就完成了。
Flannel很新颖很不错 实际在可控的网络里,路由的方案则性能
最好,适合生产用,配合Quagga 来做到 自动路由更新
Docker系列(十二):Kubernetes的分布式网络实践的更多相关文章
- Docker系列(十):Kubernetes集群入门
kubenetes安装 官网:https://github.com/kubernetes/kubernetes/blob/release-1.0/docs/getting-started- guide ...
- Web 前端开发精华文章推荐(jQuery、HTML5、CSS3)【系列十二】
2012年12月12日,[<Web 前端开发人员和设计师必读文章>系列十二]和大家见面了.梦想天空博客关注 前端开发 技术,分享各种增强网站用户体验的 jQuery 插件,展示前沿的 HT ...
- SQL Server 2008空间数据应用系列十二:Bing Maps中呈现GeoRSS订阅的空间数据
原文:SQL Server 2008空间数据应用系列十二:Bing Maps中呈现GeoRSS订阅的空间数据 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Se ...
- Alamofire源码解读系列(十二)之请求(Request)
本篇是Alamofire中的请求抽象层的讲解 前言 在Alamofire中,围绕着Request,设计了很多额外的特性,这也恰恰表明,Request是所有请求的基础部分和发起点.这无疑给我们一个Req ...
- struts2官方 中文教程 系列十二:控制标签
介绍 struts2有一些控制语句的标签,本教程中我们将讨论如何使用 if 和iterator 标签.更多的控制标签可以参见 tags reference. 到此我们新建一个struts2 web 项 ...
- 爬虫系列(十二) selenium的基本使用
一.selenium 简介 随着网络技术的发展,目前大部分网站都采用动态加载技术,常见的有 JavaScript 动态渲染和 Ajax 动态加载 对于爬取这些网站,一般有两种思路: 分析 Ajax 请 ...
- Docker系列(二):通过Docker安装使用 Kubernetes (K8s)
Docker社区版从17.12版本开始已经提供了对Kubernetes的支持.但是由于其安装过程依赖的镜像服务在国内访问很不稳定,很多朋友都无法配置成功.我们提供了一个简单的工具帮助大家开启Docke ...
- Alamofire源码解读系列(十二)之时间轴(Timeline)
本篇带来Alamofire中关于Timeline的一些思路 前言 Timeline翻译后的意思是时间轴,可以表示一个事件从开始到结束的时间节点.时间轴的概念能够应用在很多地方,比如说微博的主页就是一个 ...
- 学习ASP.NET Core Razor 编程系列十二——在页面中增加校验
学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...
随机推荐
- 【HDUOJ】1213 How many tables
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1213 题意:Ignatius邀请了n个朋友来家里,朋友之间如果互相不认识的不想坐一起,所以至少要准备几 ...
- SVG动画制作工具 , 从此抛弃臃肿的gif
VG简介 只要是程序员的你,你不得不知道svg图片,它可以无限任意放大拉伸都不会损失画质,就像系统字体一样可以无限矢量放大,svg更高级是可以用来制作矢量动画,现在各大浏览器和系统基本对svg已经支持 ...
- C# 调用java的Webservice时关于非string类型处理
比如webservice地址是:http://wdft.com:80/services/getOrderService1.0?wsdl 方法是:getOrder 1.首先添加引用: 2. 3.引用完成 ...
- Python连接数据库流行用到的第三方库
Python连接数据库流行用到的第三方库: mysqldb:只支持Python2.x mysqlclient : mysqldb的衍生版本,完全兼容mysqldb,同时支持Python3.x,安装较复 ...
- range和arange
a = np.arange(12) print(a, type(a)) b = range(10) print(b, type(b)) li = list(b) print(li) 拓展: 两个参数: ...
- String--->Double 不依赖地域性的转换
double.TryParse(icStr, System.Globalization.NumberStyles.Any, System.Globalization.CultureInfo.Invar ...
- 校园商铺-2Logback配置与使用-2Logback配置
logback配置文件加载顺序 logback:程序在运行的时候,会按照一定的顺序去加载logbook相关的配置文件. 如果我们在配置里面制定了logbackConfigurationFile这个属性 ...
- 线性dp,后缀处理——cf1016C好题
绝对是好题 #include<bits/stdc++.h> using namespace std; #define maxn 300005 #define ll long long ll ...
- JavaScript中的浏览器对象模型
浏览器对象模型 1.浏览器引入JavaScript 1.直接在HTML文件中引入 首先第1种方式就是直接在HTML文档里面引入JavaScript代码.在维护一些老项目的时候,经常 可以看到J ava ...
- 安装Docker 服务
curl -fsSL https://get.docker.com/ | sh 执行到这一部分出错: The program 'curl' is currently not installed. Yo ...