目录
1、离线安装:
(1)软件下载:
软件下载入口地址:https://github.com/flannel-io/flannel,本地下载的是0.12.0版本。
(2)软件上传:
将下载的软件包上传到服务器自定义文件夹中。
(3)软件解压:
解压服务器中的软件包。
(4)创建目录:
创建flannel配置文件目录:mkdir -p /usr/local/flannel/config
(5)安装flannel:
将解压后的flanneld移动到/usr/bin中。
将解压后的mk-docker-opts.sh移动到/usr/local/flannel中。
(6)修改flannel配置文件:
在flannel配置文件目录中,创建flanneld文件,文件有以下参数:
FLANNEL_ETCD_ENDPOINTS="http://192.168.137.180:2379"
FLANNEL_ETCD_PREFIX="/flannel/network"
FLANNEL_OPTIONS="--iface=ens33" #设置自己的通信物理网卡
说明:IP地址为etcd服务的IP地址,如果etcd是集群那么对应的FLANNEL_ETCD_ENDPOINTS为访问etcd集群的url用英文逗号分隔;FLANNEL_ETCD_PREFIX要与下面在etcd中设置的环境变量的前缀相同。
查看服务器物理网卡的命令为:
ls /sys/class/net/ | grep -v "`ls /sys/devices/virtual/net/`"
(7)创建flannel服务脚本:
在/usr/lib/systemd/system中,创建flannel服务脚本:flanneld.service,脚本内容如下:
[Unit]
Description=Flannel Network Fabric
Documentation=https://github.com/coreos/flannel
Before=docker.service
After=etcd.service
[Service]
Type=notify
EnvironmentFile=-/usr/local/flannel/config/flanneld
ExecStart=/usr/bin/flanneld \
--etcd-endpoints=${FLANNEL_ETCD_ENDPOINTS} \
--etcd-prefix=${FLANNEL_ETCD_PREFIX} \
${FLANNEL_OPTIONS}
Restart=always
RestartSec=10s
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
(8)授权flannel服务脚本:
对flanneld.service脚本授权777:
执行命令:
chmod 777 /usr/lib/systemd/system/flanneld.service
(9)重新加载系统服务脚本:
执行命令:
systemctl daemon-reload
2、在线安装:
(1)安装flannel:
执行命令:
yum install -y flannel
(2)修改flannel配置文件:
修改文件:/etc/sysconfig/flanneld,以下参数:
FLANNEL_ETCD_ENDPOINTS="http://192.168.137.160:2379"
FLANNEL_ETCD_PREFIX="/k8s/network"
FLANNEL_OPTIONS="--iface=ens33" #设置自己的通信物理网卡
说明:IP地址为etcd服务的IP地址,如果etcd是集群那么对应的FLANNEL_ETCD_ENDPOINTS为访问etcd集群的url用英文逗号分隔;FLANNEL_ETCD_PREFIX要与下面在etcd中设置的环境变量的前缀相同。
查看服务器物理网卡的命令为:
ls /sys/class/net/ | grep -v "`ls /sys/devices/virtual/net/`"
3、修改etcd中环境变量:
在etcd中配置flannel网段的IP:
执行命令:
etcdctl set /flannel/network/config '{ "Network":"172.16.0.0/16" }'
如果是在搭建k8s集群过程中,在etcd中设置环境变量的操作应该不需要,会在集群搭建的过程中,设置好的。执行该命令就是在etcd中存储一个key-value键值对而已。类似在redis中通过执行redis命令存入一个键值对一样。
4、操作flannel服务:
(1)启动服务:
执行命令:systemctl start flanneld
(2)停止服务:
执行命令:systemctl stop flanneld
(3)查看服务状态:
执行命令:systemctl status flanneld
(4)服务开机自启:
执行命令:systemctl enable flanneld
(5)关闭服务开机自启:
执行命令:systemctl disable flanneld
5、配置docker连接flannel:
说明:一下操作步骤只是让单独的docker容器连接上flannel网络,这样docker构建的容器分配的IP就是在flannel网络上了,这样跨服务器的docker容器之间的IP就可以ping通了。
如果是在搭建k8s集群中,那么按照对应的k8s集群中配置docker连接flannel即可,不要按照下面的操作了就。
(1)修改docker服务配置文件:
修改docker服务文件:/usr/lib/systemd/system/docker.service,增加环境变量文件的引用:EnvironmentFile=/run/flannel/subnet.env,并在ExecStart的值后追加参数:--bip=${FLANNEL_SUBNET} --mtu=${FLANNEL_MTU}
说明:因为/run/flannel/subnet.env文件中存储了当前服务器上安装的flannel的网络信息,在docker服务脚本中引入该文件作为环境变量文件,并在启动docker的命令行中指定flannel网络相关参数,表示docker使用的网络是flannel配置的网络段,这样就可以实现不同服务器之间的docker容器网络可ping通了。
(2)重新加载系统服务脚本:
执行命令:systemctl daemon-reload
(3)重启docker服务:
执行命令:systemctl restart docker.service