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 ...
随机推荐
- <后端>Flask框架
1.Flask框架安装 简介:轻量级WEB框架,类似于简单版本的Django pip install flask 环境文件生成 pip freeze > requirement.txt 环境文件 ...
- Spark运行架构设计
- Android Studio 配置快速生成模板代码
前言 Android studio 有提供快速生成模板代码的功能,其实这个功能也可以自定义配置.此篇博客将讲解如何使用此功能 进入Settings 选择 Editor > Live Templa ...
- Laravel Illuminate\Http\Exceptions\PostTooLargeException
出错原因是: 请求的post的数据比 php.ini设定的 post_max_size大的原因 解决方法: 增加php.ini中 post_max_size和upload_max_filesize的设 ...
- @Value的使用
<Spring源码解析>笔记 使用@Value赋值:1.基本数值2.可以写SpEL: #{}3.可以写${}:取出配置文件[properties]中的值(在运行环境变量里面的值) 1.创建 ...
- springboot2.x jpa接入多数据源
环境:springboot 2.1.4 数据源引入方式 数据源一 @Configuration @EnableTransactionManagement @EnableJpaRepositories( ...
- 学习Caffe(一)使用Caffe
如何使用Caffe Caffe教程(http://robots.princeton.edu/courses/COS598/2015sp/slides/Caffe/caffe_tutorial.pdf) ...
- C++在#include命令中,用〈 〉和“”有什么区别
使用尖括号表示在包含文件目录中去查找(包含目录是由用户在设置环境时设置的),而不在源文件目录去查找: 使用双引号则表示首先在当前的源文件目录中查找,若未找到才到包含目录中去查找.
- duilib教程之duilib入门简明教程18.其他
一.超链接按钮 代码很简单,参见360Demo: <Button text="{u}{a}求助{/a}{/u}" showhtml="true&qu ...
- python模块operator对排序的辅助功能
一.介绍 该operator模块导出一组与Python的内部运算符相对应的高效函数.例如,等同于表达式.函数名称是用于特殊类方法的函数名称; 为方便起见,还提供了没有前导和尾随的变体.operator ...