配置flannel
其实flannel也是和etcd一样,不用安装的,直接从官方下载二进制执行文件就可以了,当然,你也可以自己编译
,首先配置好flannel,再配置docker,使其使用flannel网络。
编辑/usr/lib/systemd/system/flanneld.service
(主要修改成你的flanneld程序路径):
[Unit]
Description=flannel
[Service]
ExecStart=/opt/flannel/flanneld \
-etcd-endpoints=http://172.16.164.5:4001 #etcd地址
[Install]
WantedBy=multi-user.target
systemctl start flanneld
正常情况下,使用ip a s flannel0
可以查看到flannel的桥接网卡已经起来了。
配置docker
首先生成Docker参数,在flannel程序包中有脚本,执行/opt/flannel/mk-docker-opts.sh -c
,回生成docker的启动参数,默认保存到/run/docker_opts.env,也可以使用-i
参数,生成的样式不一样,正常来说,把这些参数加到Docker的启动参数中,重启Docker就可以了,但是方便起见,我希望这个脚本加入到Docker中,每次重启Docker都能重新生成这个配置,避免网络变化导致参数不对,所以我修改了Docekr的启动配置:/usr/lib/systemd/system/docker.service
:(如果你不是使用引入文件的方式,就把配置项加到docker启动参数里)
[Unit]
Description=Docker Application Container Engine
Documentation=http://docs.docker.com
After=network.target
After=flanneld.service
Requires=flanneld.service
Wants=docker-storage-setup.service
[Service]
Type=notify
NotifyAccess=all
EnvironmentFile=/run/docker_opts.env #+ 引入环境变量
EnvironmentFile=-/etc/sysconfig/docker
EnvironmentFile=-/etc/sysconfig/docker-storage
EnvironmentFile=-/etc/sysconfig/docker-network
Environment=GOTRACEBACK=crash
ExecStartPre=/opt/flannel/mk-docker-opts.sh -c #+ 执行脚本,备下次使用
ExecStart=/bin/sh -c '/usr/bin/docker daemon $OPTIONS \
$MK_DOCKER_OPTS \ #+ 我脚本中的变量名称我改成了这个,并在脚本中加入清理这个变量,否则每次生成的配置都会叠在一起重复
$DOCKER_OPTS \
$DOCKER_STORAGE_OPTIONS \
$DOCKER_NETWORK_OPTIONS \
$ADD_REGISTRY \
$BLOCK_REGISTRY \
$INSECURE_REGISTRY \
2>&1 | /usr/bin/forward-journald -tag docker'
LimitNOFILE=1048576
LimitNPROC=1048576
LimitCORE=infinity
MountFlags=slave
TimeoutStartSec=0
Restart=on-failure
StandardOutput=null
StandardError=null
[Install]
WantedBy=multi-user.target
之后重启docker,正常的话,使用ip a
可以看到docker0网卡和flannel0网卡是在同一个网段。多个节点配置好后,不同主机上运行容器,容器之间应该也是可以直接访问。
所有评论(0)