安装网络组件Flannel
由于Flannel使用etcd作为数据库,所以需要预先安装好etcd
1.安装
下载安装包(也可以用yum方式安装)
wget -c https://github.com/coreos/flannel/releases/download/v0.10.0/flannel-v0.10.0-linux-amd64.tar.gz
解压
tar -zxvf flannel-v0.10.0-linux-amd64.tar.gz
把二进制文件flanneld和mk-docker-opts.sh 复制到/usr/bin(活其他PATH环境变量中的目录)中,即可完成对Flannel的安装
cp {flanneld,mk-docker-opts.sh} /usr/bin/
2.配置Fannel
编辑服务配置文件/usr/lib/systemd/system/flanneld.service
vim /usr/lib/systemd/system/flanneld.service
##
[Unit]
Description=flanneld overlay address etcd agent
After=network.target
Before=docker.service
[Service]
Type=notify
EnvironmentFile=/etc/sysconfig/flanneld
ExecStart=/usr/bin/flanneld -etcd-endpoints=${FLANNEL_ETCD_ENDPOINTS} -etcd-prefix=${FLANNEL_ETCD_PREFIX} $FLANNEL_OPTIONS
[Install]
RequiredBy=docker.service
WantedBy=multi-user.target
编辑配置文件/etc/sysconfig/flanneld,设置etcd的URL地址
vim /etc/sysconfig/flanneld
##
#flanneld configuration options
# etcd url location. Point this to the server where etcd runs
FLANNEL_ETCD_ENDPOINTS="http://115.28.85.91:2379"
# etcd config key. This is the configuration key that flannel queries
# For address range assignment
FLANNEL_ETCD_PREFIX="/k8s-flannel/network"
在启动flanneld服务之前,需要在etcd中添加一条网络配置记录,这个配置将用于flanneld分配给每个Docker的虚拟IP地址段。在etcd服务器上执行
> V3版本
etcdctl put /k8s-flannel/network/config '{ "Network": "10.1.0.0/16" }'
> V2版本
ETCDCTL_API=2 etcdctl mk /k8s-flannel/network/config '{ "Network": "10.1.0.0/16" }'
验证
ETCDCTL_API=2 etcdctl ls
##正确将返回key
/k8s-flannel
有与flannel将覆盖docker0网桥,所以如果docker服务已启动,则需要停止启动docker服务.
注意:
Flannel v0.10.0 一下版本 不支持etcd v3 版本API方式访问,如果etcd设置的默认API版本为V3版本,则需要使用V2版本方式访问,可以在命令前加 ETCDCTL_API=2
3.启动
启动Flannel之后,需依次重启docker、kubernetes
systemctl restart flanneld
设置docker0的网桥的IP地址
mk-docker-opts.sh -i
source /run/flannel/subnet.env
ifconfig docker0 ${FLANNEL_SUBNET}
找到生成的docker配置文件
mk-docker-opts.sh -h
##
Generate Docker daemon options based on flannel env file
OPTIONS:
-f Path to flannel env file. Defaults to /run/flannel/subnet.env
-d Path to Docker env file to write to. Defaults to /run/docker_opts.env
-i Output each Docker option as individual var. e.g. DOCKER_OPT_MTU=1500
-c Output combined Docker options into DOCKER_OPTS var
-k Set the combined options key to this value (default DOCKER_OPTS=)
-m Do not output --ip-masq (useful for older Docker version)
可以看到docker的环境参数文件生成到/run/docker_opts.env
##
DOCKER_OPT_BIP="--bip=169.169.50.1/24"
DOCKER_OPT_IPMASQ="--ip-masq=true"
DOCKER_OPT_MTU="--mtu=1472"
> 增加参数
DOCKER_OPTS=" --bip=169.169.50.1/24 --ip-masq=true --mtu=1472"
修改docker启动参数配置文件
vim /usr/lib/systemd/system/docker.service
##
#修改环境参数文件,以及启动参数
EnvironmentFile=/run/docker_opts.env
ExecStart=/usr/bin/dockerd $DOCKER_OPTS
注意:
完成后确认网络接口docker0的IP地址属于flannel0的子网
ip a
##
docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN
link/ether 02:42:fd:82:38:a7 brd ff:ff:ff:ff:ff:ff
inet 10.1.21.1/24 brd 10.1.21.255 scope global docker0
valid_lft forever preferred_lft forever
flannel0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1472 qdisc pfifo_fast state UNKNOWN qlen 500
link/none
inet 10.1.21.0/16 scope global flannel0
valid_lft forever preferred_lft forever
重新启动docker服务
systemctl restart docker
至此就完成了Flannel覆盖网络的设置。
使用ping命令验证各Node上docker0之间的相互访问
Comments | NOTHING