Kubernetes集群安装 (二)


安装网络组件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之间的相互访问

声明:初心|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - Kubernetes集群安装 (二)


愿你勿忘初心,并从一而终