1. 程式人生 > >centos7下安裝docker(15.4跨主機網絡-flannel)

centos7下安裝docker(15.4跨主機網絡-flannel)

url eos 配置 實現 國外 ken 由於 con pin

flannel是CoreOS開發的容器網絡解決方案,flannel為每一個host分配一個subnet,容器從這些subnet中分配IP,這些IP可以在host之間路由,容器無需NAT和port mapping就可以跨主機通信。

每個subnet都是一個更大的IP池中劃分的,flannel會在每個主機上運行一個叫flanned的agent,其職責就是從池子中分配subnet。為了在個主機之間共享,flannel用etcd(與consul類似的key-value分布式還素據庫)存放網絡狀態,已分配的subnet,host的IP等信息

數據包如何在主機之間轉發是由backend實現的,flannel提供了多種backend,最常用的有vxlan和host-gw,我們重點學習xvlan和host-gw,其他backend,參考:https://github.com/coreos/flannel

試驗環境:盜圖

技術分享

etcd部署在192.168.7.222,docker1和docker2上部署flanneld

先來配置etcd,註:我們本次使用的方法是直接在192.168.7.222上運行腳本,當然也可以用容器來運行etcd,但是由於etcd所需的鏡像在國外網站才能下載到,所以本次不使用容器的方法

容器的方法請參考:https://github.com/coreos/etcd/releases/

技術分享

使用在linu本地創建etcd:

1.在192.168.7.222上運行如下腳本:本腳本在usr/local/bin下

技術分享

ETCD_VER=v3.2.9

# choose either URL
GOOGLE_URL=https://storage.googleapis.com/etcd
GITHUB_URL=https://github.com/coreos/etcd/releases/download
DOWNLOAD_URL=${GOOGLE_URL}

rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test

curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1

/tmp/etcd-download-test/etcd --version
<<COMMENT
etcd Version: 3.2.9
Git SHA: f1d7dd8
Go Version: go1.8.4
Go OS/Arch: linux/amd64
COMMENT

ETCDCTL_API=3 /tmp/etcd-download-test/etcdctl version
<<COMMENT
etcdctl version: 3.2.9
API version: 3.2
COMMENT

技術分享

啟動etcd服務:

/tmp/etcd-download-test/etcd也可在/tmp/etcd-dowmload-test/etcd下執行./etcd

技術分享


centos7下安裝docker(15.4跨主機網絡-flannel)