flannel 概述

flannel 是 CoreOS 开发的容器网络解决方案。

flannel 为每个 host 分配一个 subnet,容器从此 subnet 中分配 IP,这些 IP 可以在 host 间路由,容器间无需 NAT 和 port mapping 就可以跨主机通信。

每个 subnet 都是从一个更大的 IP 池中划分的,flannel 会在每个主机上运行一个叫 flanneld 的 agent,其职责就是从池子中分配 subnet。

为了在各个主机间共享信息,flannel 用 etcd(与 consul 类似的 key-value 分布式数据库)存放网络配置、已分配的 subnet、host 的 IP 等信息。

数据包如何在主机间转发是由 backend 实现的。

flannel 提供了多种 backend,最常用的有 vxlan 和 host-gw。(其他 backend 请参考 https://github.com/coreos/flannel。)

flannel实验环境描述如图:

etcd 部署在 10.12.31.21上,host1(10.12.31.22) 和 host2(10.12.31.23) 上运行 flanneld,首先安装配置 etcd。

1)安装配置 etcd

 [root@ubuntu ~]$cat etcd_install.sh
ETCD_VER=v2.3.7
DOWNLOAD_URL=https://github.com/coreos/etcd/releases/download
curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
mkdir -p /tmp/test-etcd && tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/test-etcd --strip-components=
cp /tmp/test-etcd/etcd* /usr/local/bin/
 [root@ubuntu ~]$sh etcd_install.sh
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
--:--:-- :: --:--:--
--:--:-- :: --:--:-- 100k
8347k 8347k 222k :: :: --:--:-- 250k
etcd-v2.3.7-linux-amd64/Documentation/
etcd-v2.3.7-linux-amd64/Documentation/runtime-configuration.md
etcd-v2.3.7-linux-amd64/Documentation/admin_guide.md
etcd-v2.3.7-linux-amd64/Documentation/tuning.md
etcd-v2.3.7-linux-amd64/Documentation/glossary.md
etcd-v2.3.7-linux-amd64/Documentation/rfc/
etcd-v2.3.7-linux-amd64/Documentation/rfc/v3api.md
etcd-v2.3.7-linux-amd64/Documentation/discovery_protocol.md
etcd-v2.3.7-linux-amd64/Documentation/errorcode.md
etcd-v2.3.7-linux-amd64/Documentation/metrics.md
etcd-v2.3.7-linux-amd64/Documentation/security.md
etcd-v2.3.7-linux-amd64/Documentation/configuration.md
etcd-v2.3.7-linux-amd64/Documentation/docker_guide.md
etcd-v2.3.7-linux-amd64/Documentation/dev/
etcd-v2.3.7-linux-amd64/Documentation/dev/release.md
etcd-v2.3.7-linux-amd64/Documentation/members_api.md
etcd-v2.3.7-linux-amd64/Documentation/auth_api.md
etcd-v2.3.7-linux-amd64/Documentation/backward_compatibility.md
etcd-v2.3.7-linux-amd64/Documentation/platforms/
etcd-v2.3.7-linux-amd64/Documentation/platforms/freebsd.md
etcd-v2.3.7-linux-amd64/Documentation/libraries-and-tools.md
etcd-v2.3.7-linux-amd64/Documentation/implementation-faq.md
etcd-v2.3.7-linux-amd64/Documentation/reporting_bugs.md
etcd-v2.3.7-linux-amd64/Documentation/upgrade_2_2.md
etcd-v2.3.7-linux-amd64/Documentation/internal-protocol-versioning.md
etcd-v2.3.7-linux-amd64/Documentation/upgrade_2_1.md
etcd-v2.3.7-linux-amd64/Documentation/faq.md
etcd-v2.3.7-linux-amd64/Documentation/api_v3.md
etcd-v2.3.7-linux-amd64/Documentation/runtime-reconf-design.md
etcd-v2.3.7-linux-amd64/Documentation/clustering.md
etcd-v2.3.7-linux-amd64/Documentation/proxy.md
etcd-v2.3.7-linux-amd64/Documentation/branch_management.md
etcd-v2.3.7-linux-amd64/Documentation/other_apis.md
etcd-v2.3.7-linux-amd64/Documentation/benchmarks/
etcd-v2.3.7-linux-amd64/Documentation/benchmarks/etcd----rc-memory-benchmarks.md
etcd-v2.3.7-linux-amd64/Documentation/benchmarks/etcd--demo-benchmarks.md
etcd-v2.3.7-linux-amd64/Documentation/benchmarks/etcd----benchmarks.md
etcd-v2.3.7-linux-amd64/Documentation/benchmarks/etcd----alpha-benchmarks.md
etcd-v2.3.7-linux-amd64/Documentation/benchmarks/etcd-storage-memory-benchmark.md
etcd-v2.3.7-linux-amd64/Documentation/benchmarks/README.md
etcd-v2.3.7-linux-amd64/Documentation/benchmarks/etcd----rc-benchmarks.md
etcd-v2.3.7-linux-amd64/Documentation/benchmarks/etcd--watch-memory-benchmark.md
etcd-v2.3.7-linux-amd64/Documentation/api.md
etcd-v2.3.7-linux-amd64/Documentation/authentication.md
etcd-v2.3.7-linux-amd64/Documentation/04_to_2_snapshot_migration.md
etcd-v2.3.7-linux-amd64/Documentation/upgrade_2_3.md
etcd-v2.3.7-linux-amd64/Documentation/production-users.md
etcd-v2.3.7-linux-amd64/README-etcdctl.md
etcd-v2.3.7-linux-amd64/etcdctl
etcd-v2.3.7-linux-amd64/etcd
etcd-v2.3.7-linux-amd64/README.md
[root@ubuntu ~]$

该脚本从 github 上下载 etcd 的可执行文件并保存到 /usr/local/bin/,启动 etcd 并打开 2379 监听端口。

etcd -listen-client-urls http://10.12.31.21:2379 -advertise-client-urls http://10.12.31.21:2379

 [root@ubuntu ~]$etcd -listen-client-urls http://10.12.31.21:2379 -advertise-client-urls http://10.12.31.21:2379
-- ::33.110359 I | etcdmain: etcd Version: 2.3.
-- ::33.110422 I | etcdmain: Git SHA: fd17c91
-- ::33.110430 I | etcdmain: Go Version: go1.6.2
-- ::33.110437 I | etcdmain: Go OS/Arch: linux/amd64
-- ::33.110444 I | etcdmain: setting maximum number of CPUs to , total number of available CPUs is
-- ::33.110451 W | etcdmain: no data-dir provided, using default data-dir ./default.etcd
-- ::33.110705 I | etcdmain: listening for peers on http://localhost:2380
-- ::33.110802 I | etcdmain: listening for peers on http://localhost:7001
-- ::33.110840 I | etcdmain: listening for client requests on http://10.12.31.21:2379
-- ::33.114237 I | etcdserver: name = default
-- ::33.114254 I | etcdserver: data dir = default.etcd
-- ::33.114259 I | etcdserver: member dir = default.etcd/member
-- ::33.114264 I | etcdserver: heartbeat = 100ms
-- ::33.114271 I | etcdserver: election = 1000ms
-- ::33.114278 I | etcdserver: snapshot count =
-- ::33.114288 I | etcdserver: advertise client URLs = http://10.12.31.21:2379
-- ::33.114297 I | etcdserver: initial advertise peer URLs = http://localhost:2380,http://localhost:7001
-- ::33.114310 I | etcdserver: initial cluster = default=http://localhost:2380,default=http://localhost:7001
-- ::33.141747 I | etcdserver: starting member ce2a822cea30bfca in cluster 7e27652122e8b2ae
-- ::33.141853 I | raft: ce2a822cea30bfca became follower at term
-- ::33.141900 I | raft: newRaft ce2a822cea30bfca [peers: [], term: , commit: , applied: , lastindex: , lastterm: ]
-- ::33.141915 I | raft: ce2a822cea30bfca became follower at term
-- ::33.142350 I | etcdserver: starting server... [version: 2.3., cluster version: to_be_decided]
-- ::33.143380 N | etcdserver: added local member ce2a822cea30bfca [http://localhost:2380 http://localhost:7001] to cluster 7e27652122e8b2ae
-- ::33.143968 E | etcdmain: failed to notify systemd for readiness: No socket
-- ::33.144218 E | etcdmain: forgot to set Type=notify in systemd service file?
-- ::33.542474 I | raft: ce2a822cea30bfca is starting a new election at term
-- ::33.542972 I | raft: ce2a822cea30bfca became candidate at term
-- ::33.543300 I | raft: ce2a822cea30bfca received vote from ce2a822cea30bfca at term
-- ::33.543575 I | raft: ce2a822cea30bfca became leader at term
-- ::33.543814 I | raft: raft.node: ce2a822cea30bfca elected leader ce2a822cea30bfca at term
-- ::33.544664 I | etcdserver: published {Name:default ClientURLs:[http://10.12.31.21:2379]} to cluster 7e27652122e8b2ae
-- ::33.544753 I | etcdserver: setting up the initial cluster version to 2.3
-- ::33.557561 N | etcdserver: set the initial cluster version to 2.3

测试 etcd 是否可用:

etcdctl --endpoints=10.12.31.21:2379 set foo "bar"

etcdctl --endpoints=10.12.31.21:2379 get foo

可以正常在 etcd 中存取数据了。

-----------------------------引用来自--------------------------------------

https://mp.weixin.qq.com/s?__biz=MzIwMTM5MjUwMg==&mid=2653587799&idx=1&sn=a26c6c4a9681997031cd346224d01822&chksm=8d30814eba47085870ac9695411bc1943ee054baeb6920094256215112f5817b7a3874388c89&scene=21#wechat_redirect

最新文章

  1. Windows Server 2012 在桌面上显示”我的电脑”图标
  2. C# 序列化反序列化
  3. ios waxpatch lua语法
  4. 【Todo】【转载】深入理解Java内存模型
  5. mime type 概要介绍
  6. C#_ajax fileupload
  7. C# 的轻量级 RPC 框架
  8. Intersecting Lines(数学)
  9. 如何一步一步用DDD设计一个电商网站(十一)—— 最后的准备
  10. Xmemcached学习笔记
  11. 使用MongoVUE
  12. 01-jQuery基本语法
  13. ueditor接入秀米编辑器
  14. 【软工神话】第四篇(Alpha冲刺)
  15. Github+阿超运算
  16. https-配置使用HTTPS的ASP.NET Web应用
  17. php对象的实现
  18. pandas 一行文本拆多行,一列拆多列
  19. (网络流 匹配 KM) Going Home --poj -- 2195
  20. SQL SERVER Management Studio编写SQL时没有智能提示的解决方式

热门文章

  1. Merge git repo into branch of another repo
  2. 深入浅出MyBatis-快速入门
  3. H5浏览器播放RTMP直播流实现切换
  4. 【4OpenCV】OpenCV和RTSP的综合研究
  5. 20145308 《网络对抗》Web安全基础实践 学习总结
  6. Python标准库inspect
  7. topcoder srm 696 div1 -3
  8. Python3 tkinter基础 Listbox delete 删除单个、所有元素
  9. Python3 tkinter基础 Label imag显示图片
  10. SQL 基础语法笔记教程整理