CentOS 7安裝etcd和flannel實現docker跨物理機通訊
在搭建Kubernetes的環境的時候,你可能會遇到一些問題,不!你會遇到很多問題。比如,首先你要實現跨物理機的容器訪問——是不同物理內的容器能夠互相訪問,而不是你平常所看到的亂七八糟的埠對映。方案有很多,比如OVS、flannel、socketplane什麼的,下面是我搭建etcd和flannel的過程,希望對需要這樣的環境的人有所幫助,少走彎路。再說一次:跨物理機的容器之間能直接訪問
架構
實驗的架構非常簡單,三臺機器,為了簡化,我只設定了一臺etcd,沒有做叢集,三臺機器安裝flannel和Docker。
- 172.16.164.5 //etcd、flannel、docker
- 172.16.164.6 //flannel、docker
- 172.16.164.7 //flannel、docker
安裝etcd
- 172.16.164.5
etcd的安裝是尤其簡單的——如果你有翻牆的話,下載二進位制直接執行就是了,在這裡我設定成了一個新的叢集。-
#也許你需要翻牆,github使用的是amazon的s3儲存
-
wget https://github.com/coreos/etcd/releases/download/v2.3.2/etcd-v2.3.2-linux-amd64.tar.gz
-
tar xvf etcd-v2.3.2-linux-amd64.tar.gz
-
cd etcd-v2.3.2-linux-amd64
-
mv etcd* /usr/bin
-
cat /usr/lib/systemd/system/etcd.service
-
[Unit]
-
Description=etcd
-
[Service]
-
Environment=ETCD_NAME=kubernetes
-
Environment=ETCD_DATA_DIR=/var/lib/etcd
-
Environment=ETCD_LISTEN_CLIENT_URLS=http://172.16.164.5:4001,http://localhost:4001
-
Environment=ETCD_LISTEN_PEER_URLS=http://172.16.164.5:7001,http://localhost:7001
-
Environment=ETCD_INITIAL_ADVERTISE_PEER_URLS=http://172.16.164.5:7001,http://localhost:7001
-
Environment=ETCD_ADVERTISE_CLIENT_URLS=http://172.16.164.5:4001,http://localhost:4001
-
Environment=ETCD_INITIAL_CLUSTER_STATE=new
-
Environment=ETCD_INITIAL_CLUSTER_TOKEN=Kubernetes
-
Environment=ETCD_INITIAL_CLUSTER=kubernetes=http://172.16.164.5:7001,kubernetes=http://localhost:7001
-
ExecStart=/usr/bin/etcd
-
[Install]
-
WantedBy=multi-user.target
systemctl start etcd
啟動etcd,可以通過etcdctl ls /
或者etcdctl mkdir /test
測試etcd可用性。新增網段
確定etcd可以使用之後,我們需要設定分配給docker網路的網段etcdctl mk /coreos.com/network/config '{"Network":"172.17.0.0/16", "SubnetMin": "172.17.1.0", "SubnetMax": "172.17.254.0"}'
安裝flannel
-
- 172.16.164.5
- 172.16.164.6
- 172.16.164.7
三臺主機都要執行
其實flannel也是和etcd一樣,不用安裝的,直接從官方下載二進位制執行檔案就可以了,當然,你也可以自己編譯。-
wget https://github.com/coreos/flannel/releases/download/v0.5.5/flannel-0.5.5-linux-amd64.tar.gz
-
tar xvf flannel-0.5.5-linux-amd64.tar.gz
-
mv flannel-0.5.5-linux-amd64 /opt/flannel
-
cat /usr/lib/systemd/system/flanneld.service
-
[Unit]
-
Description=flannel
-
[Service]
-
ExecStart=/opt/flannel/flanneld \
-
-etcd-endpoints=http://172.16.164.5:4001
-
[Install]
-
WantedBy=multi-user.target
systemctl start flanneld
啟動服務,正常情況下,你執行ip a
已經可以看到flannel0
橋接網路卡了,etcd上執行etcdctl ls /coreos.com/network/subnets
也能夠看到flannel申請的網段。修改Docker引數
要像使docker使用flannel的網路傳遞資料,要修改一些啟動引數。-
cd /opt/flannel/
-
./mk-docker-opts.sh -i
mk-docker-opts.sh --help
可一直到這個指令碼會生成一些docker引數,放到/run/docker_opts.env檔案中,我們只需要將這些引數,加入到docker的啟動引數-
cat /etc/sysconfig/docker | grep OPT
-
OPTIONS='--selinux-enabled --bip=172.17.64.1/24 --ip-masq=true --mtu=1472'
-
Paste_Image.png
配置完畢後,便可以啟動docker了。
-
sytemctl stop docker
-
ifconfig down docker0
-
systemctl start docker
-
ip a s docker0
-
#可以看到docker0已經獲取了flannel網段的地址
Paste_Image.png
最後
三臺機器都配置好了之後,我們在三臺機器上分別開啟一個docker容器,測試它們的網路是不是通的。
-
docker run -ti centos bash
-
#一次檢視容器IP
-
cat /etc/hosts
-
172.17.97.2 334cec104721
-
#測試連通性,都成功就OK了
-
#到跨物理機容器
-
ping -c 1 172.16.164.7
-
ping -c 1 172.17.67.1
-
#到宿主機
-
ping -c 1 172.16.164.7
-
#到別的物理機
-
ping -c 1 172.16.164.6
相關文章
- Centos 7 Docker 安裝CentOSDocker
- CentOS7上安裝和使用DockerCentOSDocker
- 實體機安裝 CentOS 7CentOS
- CentOS7 安裝 dockerCentOSDocker
- centos7安裝dockerCentOSDocker
- Centos7安裝安裝部署dockerCentOSDocker
- Centos 7下下載和安裝dockerCentOSDocker
- centos7 docker 安裝教程CentOSDocker
- centos7快速安裝dockerCentOSDocker
- centOs7安裝最新dockerCentOSDocker
- Centos7上安裝dockerCentOSDocker
- centos7下docker安裝CentOSDocker
- centos7下安裝 dockerCentOSDocker
- Centos7安裝Docker EngineCentOSDocker
- Centos7下安裝DockerCentOSDocker
- Centos7 yum安裝 DockerCentOSDocker
- Centos 7 安裝 Docker 與 Docker ComposeCentOSDocker
- CentOS7 docker docker-Composer 安裝CentOSDocker
- CentOS 7 Docker安裝部署Go WebCentOSDockerGoWeb
- CentOS7 docker安裝部署教程CentOSDocker
- Docker-CE 安裝(centos7)DockerCentOS
- 在Centos7上安裝DockerCentOSDocker
- docker:安裝centos7映象(六)DockerCentOS
- Centos 7 安裝 docker-composeCentOSDocker
- 如何在 CentOS 7 上安裝 DockerCentOSDocker
- Centos7下解除安裝dockerCentOSDocker
- 一行命令安裝docker和docker-compose(CentOS7)DockerCentOS
- Centos7 安裝 Docker 詳細教程CentOSDocker
- Centos7編譯安裝Docker教程。CentOS編譯Docker
- centos7 安裝docker-composeCentOSDocker
- Centos7安裝docker倉庫HarborCentOSDocker
- centos7安裝docker詳細教程CentOSDocker
- Kubernetes安裝之四:flanneld跨主機通訊
- Docker架構及在Centos7上安裝dockerDocker架構CentOS
- centos7通過yum安裝nginxCentOSNginx
- CentOS Docker 安裝CentOSDocker
- CentOS 安裝 dockerCentOSDocker
- CentOS安裝DockerCentOSDocker