安裝配置 flannel - 天天5分鐘玩轉 Docker 容器技術(59)

上一節咱們部署了 etcd,本節安裝和配置 flannel。git

build flannel

flannel 沒有現成的執行文件可用,必須本身 build,最可靠的方法是在 Docker 容器中 build。不過用於作 build 的 docker 鏡像託管在 gcr.io,國內可能沒法直接訪問,爲方便你們,我把它 mirror 到了 docker hub,構建步驟以下:github

  1. 下載並重命名 image。docker

    docker pull cloudman6/kube-cross:v1.6.2-2json

    docker tag cloudman6/kube-cross:v1.6.2-2 gcr.io/google_containers/kube-cross:v1.6.2-2網絡

  2. 下載 flannel 源碼。ui

    git clone https://github.com/coreos/flannel.gitgoogle

  3. 開始構建。url

    cd flannelspa

    make dist/flanneld-amd64code

  4. 將 flanneld 執行文件拷貝到 host1 和 host2。

    scp dist/flanneld-amd64 192.168.56.104:/usr/local/bin/flanneld

    scp dist/flanneld-amd64 192.168.56.105:/usr/local/bin/flanneld

將 flannel 網絡的配置信息保存到 etcd

先將配置信息寫到文件 flannel-config.json 中,內容爲:

{

  "Network": "10.2.0.0/16",

  "SubnetLen": 24,

  "Backend": {

    "Type": "vxlan"

  }

}

  1. Network 定義該網絡的 IP 池爲 10.2.0.0/16

  2. SubnetLen 指定每一個主機分配到的 subnet 大小爲 24 位,即10.2.X.0/24

  3. Backend 爲 vxlan,即主機間經過 vxlan 通訊,後面咱們還會討論host-gw

將配置存入 etcd:
etcdctl --endpoints=192.168.56.101:2379 set /docker-test/network/config < flannel-config.json

/docker-test/network/config 是此 etcd 數據項的 key,其 value 爲 flannel-config.json 的內容。key 能夠任意指定,這個 key 後面會做爲 flanneld 的一個啓動參數。執行 etcdctl get 確保設置成功。

啓動 flannel

在 host1 和 host2 上執行以下命令:
flanneld -etcd-endpoints=http://192.168.56.101:2379 -iface=enp0s8 -etcd-prefix=/docker-test/network

-etcd-endpoints 指定 etcd url。

-iface 指定主機間數據傳輸使用的 interface。

-etcd-prefix 指定 etcd 存放 flannel 網絡配置信息的 key。

host1 上輸出以下:

① enp0s8 被選做與外部主機通訊的 interface。

② 識別 flannel 網絡池 10.2.0.0/16。

③ 分配的 subnet 爲 10.2.40.0/24。

flanneld 啓動後,host1 內部網絡會發生一些變化:

  1. 一個新的 interface flannel.1 被建立,並且配置上 subnet 的第一個 IP 10.2.40.0。

  2. host1 添加了一條路由:目的地址爲 flannel 網絡 10.2.0.0/16 的數據包都由 flannel.1 轉發。 

host2 輸出相似,主要區別是 host2 的 subnet 爲 10.2.17.0/24:

當前環境網絡拓撲如圖所示:

flannel 已經就緒,下一節演示如何在 Docker 中使用 flannel 網絡。

二維碼+指紋.png

相關文章
相關標籤/搜索