Docker网络解决方案-Flannel部署记录

1、先安装docker环境 yum install -y docker
2、安装etcd yum install etcd -y
3、安装覆盖网络Flannel yum install flannel
网关入口( 主控端(通过etcd))服务器需要安装这三个,客户机(被控端)只需要安装2,3

docker 通信安装配置
设置主机名及绑定hosts(可以不设置)

[root@node-1 ~]  hostnamectl --static set-hostname  node-1
[root@node-1 ~]  vim /etc/hosts
182.48.115.233    node-1
182.48.115.233    etcd
182.48.115.235    node-2

关闭防火墙,如果开启防火墙,则最好打开2379和4001端口

[root@node-1 ~]  systemctl disable firewalld.service
[root@node-1 ~]  systemctl stop firewalld.service

先安装docker环境

[root@node-1 ~]  yum install -y docker

安装etcd(主控端需要安装)
k8s运行依赖etcd,需要先部署etcd,下面采用yum方式安装:

[root@node-1 ~]  yum install etcd -y

yum安装的etcd默认配置文件在/etc/etcd/etcd.conf,编辑配置文件:

[root@node-1 ~]  cp /etc/etcd/etcd.conf /etc/etcd/etcd.conf.bak
[root@node-1 ~]  cat /etc/etcd/etcd.conf
#[member]
ETCD_NAME=master                                            #节点名称
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"                  #数据存放位置
#ETCD_WAL_DIR=""
#ETCD_SNAPSHOT_COUNT="10000"
#ETCD_HEARTBEAT_INTERVAL="100"
#ETCD_ELECTION_TIMEOUT="1000"
#ETCD_LISTEN_PEER_URLS="http://0.0.0.0:2380"
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379,http://0.0.0.0:4001"             #监听客户端地址
#ETCD_MAX_SNAPSHOTS="5"
#ETCD_MAX_WALS="5"
#ETCD_CORS=""
#
#[cluster]
#ETCD_INITIAL_ADVERTISE_PEER_URLS="http://localhost:2380"
# if you use different ETCD_NAME (e.g. test), set ETCD_INITIAL_CLUSTER value for this name, i.e. "test=http://..."
#ETCD_INITIAL_CLUSTER="default=http://localhost:2380"
#ETCD_INITIAL_CLUSTER_STATE="new"
#ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
 #通知客户端地址,若没有配置host,则直接配置主控端ip,若配置了host直接写host配置节点
ETCD_ADVERTISE_CLIENT_URLS="http://etcd:2379,http://etcd:4001"          
#ETCD_DISCOVERY=""
#ETCD_DISCOVERY_SRV=""
#ETCD_DISCOVERY_FALLBACK="proxy"
#ETCD_DISCOVERY_PROXY=""

启动etcd并验证状态

[root@node-1 ~] systemctl start etcd
[root@node-1 ~] ps -ef|grep etcd
etcd     28145     1  1 14:38 ?        00:00:00 /usr/bin/etcd --name=master --data-dir=/var/lib/etcd/default.etcd --listen-client-urls=http://0.0.0.0:2379,http://0.0.0.0:4001
root     28185 24819  0 14:38 pts/1    00:00:00 grep --color=auto etcd
[root@node-1 ~]  lsof -i:2379
COMMAND   PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
etcd    28145 etcd    6u  IPv6 1283822      0t0  TCP *:2379 (LISTEN)
etcd    28145 etcd   18u  IPv6 1284133      0t0  TCP localhost:53203->localhost:2379 (ESTABLISHED)
........
    
[root@node-1 ~] etcdctl set testdir/testkey0 0
0
[root@node-1 ~] etcdctl get testdir/testkey0
0
[root@node-1 ~] etcdctl -C http://etcd:4001 cluster-health
member 8e9e05c52164694d is healthy: got healthy result from http://etcd:2379
cluster is healthy
[root@node-1 ~] etcdctl -C http://etcd:2379 cluster-health
member 8e9e05c52164694d is healthy: got healthy result from http://etcd:2379
cluster is healthy

安装覆盖网络Flannel

[root@node-1 ~]# yum install flannel

配置Flannel

[root@node-1 ~]# cp /etc/sysconfig/flanneld /etc/sysconfig/flanneld.bak
[root@node-1 ~]# vim /etc/sysconfig/flanneld
# Flanneld configuration options
   
# etcd url location.  Point this to the server where etcd runs
#配置etcd的ip或者host节点
FLANNEL_ETCD_ENDPOINTS="http://etcd:2379"
   
# etcd config key.  This is the configuration key that flannel queries
# For address range assignment
FLANNEL_ETCD_PREFIX="/atomic.io/network"
   
# Any additional options that you want to pass
#FLANNEL_OPTIONS=""

配置etcd中关于flannel的key(这个只在安装了etcd的机器上操作)
Flannel使用Etcd进行配置,来保证多个Flannel实例之间的配置一致性,所以需要在etcd上进行如下配置('/atomic.io/network/config'这个key与上文/etc/sysconfig/flannel中的配置项FLANNEL_ETCD_PREFIX是相对应的,错误的话启动就会出错):

[root@node-1 ~]# etcdctl mk /atomic.io/network/config '{ "Network": "182.48.0.0/16" }'
{ "Network": "182.48.0.0/16" }

温馨提示:上面flannel设置的ip网段可以任意设定,随便设定一个网段都可以。容器的ip就是根据这个网段进行自动分配的,ip分配后,容器一般是可以对外联网的(网桥模式,只要宿主机能上网就可以)

启动Flannel

[root@node-1 ~]# systemctl enable flanneld.service
[root@node-1 ~]# systemctl start flanneld.service
[root@node-1 ~]# ps -ef|grep flannel
root      9305  9085  0 09:12 pts/2    00:00:00 grep --color=auto flannel
root     28876     1  0 May15 ?        00:00:07 /usr/bin/flanneld -etcd-endpoints=http://etcd:2379 -etcd-prefix=/atomic.io/network

启动Flannel后,一定要记得重启docker,这样Flannel配置分配的ip才能生效,即docker0虚拟网卡的ip会变成上面flannel设定的ip段

[root@node-1 ~]# systemctl restart docker

配置完成后可使用ping 命令测试容器建是否已经接通,如果服务调用不通,telnet测试端口是否可以访问,可能是防火墙问题。
iptables -L -n 查看状态
iptables -P INPUT ACCEPT
iptables -F

微信公众号欢迎关注.jpg

你可能感兴趣的:(Docker网络解决方案-Flannel部署记录)