安装flannel插件
安装flannel网络插件
如果在各node节点上安装了docker服务,查看网卡信息发现各节点的docker0网卡的ip都是172.17.0.1:
[root@wecloud-test-k8s-4 ~]# ifconfig
docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 172.17.0.1 netmask 255.255.0.0 broadcast 0.0.0.0
ether 02:42:8e:7c:23:ea txqueuelen 0 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.99.196 netmask 255.255.255.0 broadcast 192.168.99.255
inet6 fe80::f816:3eff:feb1:afe9 prefixlen 64 scopeid 0x20<link>
ether fa:16:3e:b1:af:e9 txqueuelen 1000 (Ethernet)
RX packets 10815343 bytes 1108180112 (1.0 GiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 6551758 bytes 933543908 (890.2 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 0 (Local Loopback)
RX packets 32212 bytes 1680632 (1.6 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 32212 bytes 1680632 (1.6 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
这引入了一个问题,各node节点之间如何通信,k8s没有直接提供多节点通信的解决方案,所以有flannel、 calico、 weave等网络解决方案,本文这里介绍以下flannel的方式。
flannel的官网地址如下:
https://coreos.com/flannel/docs/latest/
部署步骤
如果对于flannel版本没有特殊需求,可以直接在centos7上使用yum安装方式。
[root@wecloud-test-k8s-2 ~]# yum install flannel -y
flannel的service启动管理文件为/usr/lib/systemd/system/flanneld.service,内容如下:
[Unit]
Description=Flanneld overlay address etcd agent
After=network.target
After=network-online.target
Wants=network-online.target
After=etcd.service
Before=docker.service
[Service]
Type=notify
EnvironmentFile=/etc/sysconfig/flanneld
EnvironmentFile=-/etc/sysconfig/docker-network
ExecStart=/usr/bin/flanneld-start \
-etcd-endpoints=${FLANNEL_ETCD_ENDPOINTS} \
-etcd-prefix=${FLANNEL_ETCD_PREFIX} \
$FLANNEL_OPTIONS
ExecStartPost=/usr/libexec/flannel/mk-docker-opts.sh -k DOCKER_NETWORK_OPTIONS -d /run/flannel/docker
Restart=on-failure
[Install]
WantedBy=multi-user.target
RequiredBy=docker.service
该服务管理文件需要配置相关配置文件/etc/sysconfig/flanneld,配置信息如下:
# Flanneld configuration options
# etcd url location. Point this to the server where etcd runs
FLANNEL_ETCD_ENDPOINTS="https://192.168.99.189:2379,https://192.168.99.185:2379,https://192.168.99.196:2379"
# etcd config key. This is the configuration key that flannel queries
# For address range assignment
FLANNEL_ETCD_PREFIX="/kube-centos/network"
# Any additional options that you want to pass
FLANNEL_OPTIONS="-etcd-cafile=/etc/kubernetes/ssl/ca.pem -etcd-certfile=/etc/kubernetes/ssl/kubernetes.pem -etcd-keyfile=/etc/kubernetes/ssl/kubernetes-key.pem"
如果是多个网卡,则需要在FLANNEL_OPTIONS上指定外网出口的网卡。
在etcd中创建网络配置
执行命令为docker分配ip地址段
[root@wecloud-test-k8s-2 ~]# etcdctl --endpoints=https://192.168.99.189:2379,https://192.168.99.185:2379,https://192.168.99.196:2379 \
> --ca-file=/etc/kubernetes/ssl/ca.pem \
> --cert-file=/etc/kubernetes/ssl/kubernetes.pem \
> --key-file=/etc/kubernetes/ssl/kubernetes-key.pem \
> mkdir /kube-centos/network
[root@wecloud-test-k8s-2 ~]# etcdctl --endpoints=https://192.168.99.189:2379,https://192.168.99.185:2379,https://192.168.99.196:2379 \
> --ca-file=/etc/kubernetes/ssl/ca.pem \
> --cert-file=/etc/kubernetes/ssl/kubernetes.pem \
> --key-file=/etc/kubernetes/ssl/kubernetes-key.pem \
> mk /kube-centos/network/config '{"Network":"172.30.0.0/16","SubnetLen":24,"Backend":{"Type":"vxlan"}}'
{
"Network":"172.30.0.0/16","SubnetLen":24,"Backend":{
"Type":