久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

flannel安裝與配置...

 無人在線biblge 2022-07-29 發(fā)布于江蘇

容器間內(nèi)部通信

  • bridge模式

  • host模式

  • 自定義網(wǎng)絡(luò)

  • Container模式

  • None模式

跨主機(jī)通信

Docker默認(rèn)的網(wǎng)絡(luò)環(huán)境下,單臺(tái)主機(jī)上的Docker容器可以通過docker0網(wǎng)橋直接通信,而不同主機(jī)上的Docker容器之間只能通過在主機(jī)上做端口映射進(jìn)行通信。

這種端口映射方式對(duì)很多集群應(yīng)用來說極不方便,。 如果能讓Docker容器之間直接使用自己的IP地址進(jìn)行通信,會(huì)解決很多問題,。

按實(shí)現(xiàn)原理可分別直接路由方式、橋接方式(如pipework),、Overlay隧道方式(如flannel,、ovs+gre)等。

直接路由

Flannel 

 Flannel實(shí)質(zhì)上是一種覆蓋網(wǎng)絡(luò)(overlay network),即表示運(yùn)行在一個(gè)網(wǎng)上的網(wǎng)(應(yīng)用層網(wǎng)絡(luò)),并不依靠ip地址來傳遞消息, 而是采用一種映射機(jī)制,把ip地址和identifiers做映射來資源定位,。

也就是將TCP數(shù)據(jù)包裝在另一種網(wǎng)絡(luò)包里面進(jìn)行路由轉(zhuǎn)發(fā)和通信, 目前已經(jīng)支持UDP,、VxLAN,、AWS VPC和GCE路由等數(shù)據(jù)轉(zhuǎn)發(fā)方式。

Flannel實(shí)現(xiàn)的容器的跨主機(jī)通信通過如下過程實(shí)現(xiàn):

  • 每個(gè)主機(jī)上安裝并運(yùn)行etcdflannel,;

  • 在etcd中規(guī)劃配置所有主機(jī)的docker0子網(wǎng)范圍,;

  • 每個(gè)主機(jī)上的flannel根據(jù)etcd中的配置,為本主機(jī)的docker0分配子網(wǎng),保證所有主機(jī)上的docker0網(wǎng)段不重復(fù),并將結(jié)果(即本主機(jī)上的docker0子網(wǎng)信息和本主機(jī)IP的對(duì)應(yīng)關(guān)系)存入 etcd庫(kù)中,這樣etcd庫(kù)中就保存了所有主機(jī)上的docker子網(wǎng)信息和本主機(jī)IP的對(duì)應(yīng)關(guān)系;

  • 當(dāng)需要與其他主機(jī)上的容器進(jìn)行通信時(shí),查找etcd數(shù)據(jù)庫(kù),找到目的容器的子網(wǎng)所對(duì)應(yīng)的outip(目的宿主機(jī)的IP),;

  • 將原始數(shù)據(jù)包封裝在VXLAN或UDP數(shù)據(jù)包中,IP層以outip為目的IP進(jìn)行封裝,;

  • 由于目的IP是宿主機(jī)IP,因此路由是可達(dá)的;

  • VXLAN或UDP數(shù)據(jù)包到達(dá)目的宿主機(jī)解封裝,解出原始數(shù)據(jù)包,最終到達(dá)目的容器,。

 Flannel特點(diǎn):

1. 使集群中的不同Node主機(jī)創(chuàng)建的Docker容器都具有全集群唯一的虛擬IP地址,。

2. 建立一個(gè)覆蓋網(wǎng)絡(luò)(overlay network),通過這個(gè)覆蓋網(wǎng)絡(luò),將數(shù)據(jù)包原封不動(dòng)的傳遞到目標(biāo)容器。覆蓋網(wǎng)絡(luò)是建立在另一個(gè)網(wǎng)絡(luò)之上并由其基礎(chǔ)設(shè)施支持的虛擬網(wǎng)絡(luò),。覆蓋網(wǎng)絡(luò)通過將一個(gè)分組封裝在另一個(gè)分組內(nèi)來將網(wǎng)絡(luò)服務(wù)與底層基礎(chǔ)設(shè)施分離,。在將封裝的數(shù)據(jù)包轉(zhuǎn)發(fā)到端點(diǎn)后,將其解封裝。

3. 創(chuàng)建一個(gè)新的虛擬網(wǎng)卡flannel0接收docker網(wǎng)橋的數(shù)據(jù),通過維護(hù)路由表,對(duì)接收到的數(shù)據(jù)進(jìn)行封包和轉(zhuǎn)發(fā)(vxlan),。

4. etcd保證了所有node上flanned所看到的配置是一致的,。同時(shí)每個(gè)node上的flanned監(jiān)聽etcd上的數(shù)據(jù)變化,實(shí)時(shí)感知集群中node的變化。

環(huán)境搭建

主機(jī)ip環(huán)境要求
CentOS01192.168.23.131etcd,docker,flannel
CentOS02192.168.23.132etcd,docker,flannel
  • docker安裝與配置

  • etcd安裝與集群搭建

ETCD版本問題:

當(dāng)重新啟動(dòng) 執(zhí)行 etcdctl member list 列出所有集群節(jié)點(diǎn)信息時(shí) 報(bào)錯(cuò)了

原因:

ETCD3.4版本中,,ETCDCTL_API=3和etcd --enable-v2=false成為了默認(rèn)配置,。

flannel操作etcd使用的是v2的API,而kubernetes操作etcd使用的v3的API

為了兼容flannel,將默認(rèn)開啟v2版本,故配置文件中還要設(shè)置:

1.修改系統(tǒng)環(huán)境變量

vi /etc/profile

2.將指定etcdctl命令的版本為v2的加進(jìn)去

export ETCDCTL_API=2

 3.刷新系統(tǒng)環(huán)境

source /etc/profile

注:etcdctl2和etcdctl3是不兼容的,兩者的api參數(shù)也不一樣,最關(guān)鍵的是“v2/v3的數(shù)據(jù)是不互通的”

  • api 2 使用方法

ETCDCTL_API=2 etcdctl set key value

ETCDCTL_API=2 etcdctl ls /

ETCDCTL_API=2 etcdctl del / --prefix

  • api 3 使用方法

 ETCDCTL_API=3 etcdctl put key value

ETCDCTL_API=3 etcdctl get /

ETCDCTL_API=3 etcdctl del / --prefix

 ETCD中保存網(wǎng)絡(luò)信息

  • 使用v2版的set(而非put)命令向ETCD中保存flannel覆蓋網(wǎng)絡(luò)信息

ETCDCTL_API=2 etcdctl \ --endpoints "http://192.168.23.131:2379,http://192.168.23.132:2379" \ set /coreos.com/network/config \ '{"NetWork":"10.0.0.0/16","SubnetMin": "10.0.1.0","SubnetMax": "10.0.20.0","Backend": {"Type": "vxlan"}}'

  • Network: 用于指定Flannel地址池, 整個(gè)overlay(覆蓋)網(wǎng)絡(luò)為10.0.0.0/16網(wǎng)段

  • SubnetLen: 用于指定分配給單個(gè)宿主機(jī)的docker0的ip段的子網(wǎng)掩碼的長(zhǎng)度,默認(rèn)值也是24

  • SubnetMin: 用于指定最小能夠分配的ip段

  • SudbnetMax: 用于指定最大能夠分配的ip段,在上面的示例中,表示每個(gè)宿主機(jī)可以分配一個(gè)24位掩碼長(zhǎng)度的子網(wǎng),可以分配的子網(wǎng)從10.0.1.0/24到10.0.20.0/24,也就意味著在這個(gè)網(wǎng) 段中,最多只能有20臺(tái)宿主機(jī)

  • Backend: 用于指定數(shù)據(jù)包以什么方式轉(zhuǎn)發(fā),默認(rèn)為udp模式, 這里使用的是vxlan模式.因?yàn)闉関xlan比起預(yù)設(shè)的udp性能相對(duì)好一些

注:flannel訪問etcd時(shí)使用的key默認(rèn)為:/coreos.com/network,可修改,但必須重新配置flanneld.conf的參數(shù)etcd-prefix,例如-etcd-prefix=/zking.com/network

flannel安裝與配置

  • 下載或上傳flannel安裝包

  • 創(chuàng)建flannel安裝目錄

mkdir -p /opt/flannel

  • 解壓到安裝目錄

tar xzf flannel-v0.11.0-linux-amd64.tar.gz -C /opt/flannel

  • 查看解壓后文件

cd /opt/flannel && ls 

    flanneld為主要的執(zhí)行文件

    sh腳本用于生成Docker啟動(dòng)參數(shù)

  • 為flannel創(chuàng)建一個(gè)systemd服務(wù),用于后臺(tái)啟動(dòng)

vim /etc/systemd/system/flanneld.service

systemctl daemon-reload && systemctl restart flanneld

  • 驗(yàn)證flannel網(wǎng)絡(luò)

ifconfig

如果看到flannel.1網(wǎng)卡的地址和etcd中存儲(chǔ)的地址一樣,這樣flannel網(wǎng)絡(luò)配置完成

docker配置

在各個(gè)節(jié)點(diǎn)安裝好Docker,然后更改Docker的啟動(dòng)參數(shù),使其能夠使用flannel進(jìn)行IP分配,以及網(wǎng)絡(luò)通訊。

  • 查看flannel分配的網(wǎng)絡(luò)參數(shù)(在Flannel運(yùn)行之后,會(huì)生成一個(gè)環(huán)境變量文件,包含了當(dāng)前主機(jī)要使用flannel通訊的相關(guān)參數(shù))

 cat /run/flannel/subnet.env

  •  創(chuàng)建Docker運(yùn)行參數(shù)(使用flannel提供的腳本將subnet.env轉(zhuǎn)寫成Docker啟動(dòng)參數(shù))

/opt/flannel/mk-docker-opts.sh -d /run/flannel/docker_opts.env -c

  • 創(chuàng)建好的啟動(dòng)參數(shù)位于/run/flannel/docker_opts.env文件中,可使用cat命令查看

cat /run/flannel/docker_opts.env

  •  修改Docker啟動(dòng)參數(shù)

vim /lib/systemd/system/docker.service

下面是docker.service要修改的地方

[Service]節(jié)點(diǎn)中

指定啟動(dòng)參數(shù)所在的文件位置(這個(gè)配置是新增的) EnvironmentFile=/run/flannel/docker_opts.env

在原有ExecStart后面添加$DOCKER_OPTS

修改前 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

修改后 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock $DOCKER_OPTS

如圖:

  • 重新加載systemd配置,并重啟Docker 

 systemctl daemon-reload && systemctl restart docker && systemctl status docker

  • 查看是否應(yīng)用成功 

 ifconfig

注:觀察docker0的網(wǎng)卡ip地址已經(jīng)處于flannel網(wǎng)卡網(wǎng)段中 

 測(cè)試flannel

  • 下載centos鏡像,因?yàn)榇绥R像中其它軟件及命令均有安裝

docker run -it --name=centos centos bash

  • 依次查看集群內(nèi)容器的flannel.1網(wǎng)絡(luò)IP

cat /etc/hosts

docker inspect bridge

  • 從不同宿主機(jī)容器到其他宿主機(jī)容器

ping -c3 192.168.23.132

ping -c3 10.0.20.2

解決flannel下容器無法跨主機(jī)互通問題

經(jīng)測(cè)試,發(fā)現(xiàn)是防火墻的問題,關(guān)閉防火墻后問題解決,但作為服務(wù)的防火墻是不能關(guān)閉的,如何解決呢,。 這是由于linux還有底層的iptables,所以在node上分別執(zhí)行:

iptables -P INPUT ACCEPT

iptables -P FORWARD ACCEPT

iptables -F

iptables -L -n

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多