kubernetes1.13.0二进制部署Flannel网络(二)

kubernetes1.13.0二进制部署Flannel网络(一)

前言

由于我们的falnnel的路由信息需要存储在ETCD中,所以在上节提前部署了ETCD集群,那么本节就通过Flanel来实现网路打通,即在原来的基础网络上,建立一层虚拟的大二层网络,通过falnnel将原数据包封装成另一种网络包(UDP vxlan等)这取决与它的后端转发形式,在做初始化的时候可以通过type进行选择。

部署

  • 在ETCD写入预定义网段

etcdctl –endpoints=https://192.168.137.104:2379,https://192.168.137.105:2379,https://192.168.137.106:2379 –ca-file=/opt/kubernetes/ssl/ca.pem –cert-file=/opt/kubernetes/ssl/etcd.pem –key-file=/opt/kubernetes/ssl/etcd-key.pem set /coreos.com/network/config ‘{ “Network”: “172.17.0.0/16“, “Backend”: {“Type”: “vxlan”, “DirectRouting”: true}}’
{ “Network”: “172.17.0.0/16”, “Backend”: {“Type”: “vxlan“}

这里type选择的vxlan模式,记住不要选DirectRouting=ture,默认就是false。此参数是走直接路由类似host-gw模式。可以提高性能,但是有些网络环境是不支持的,比如阿里云vpc网络就不支持,配置后没任何问题,但就是ping不通。这里比较坑需要注意!

  • 下载flannel二进制包解压安装

tar -xvzf flannel-v0.11.0-linux-amd64.tar.gz -C /usr/local/

解压出两个文件flanneld 和 mk-docker-opts.sh

  • 修改flannel配置文件

master-1机器执行

mv mk-docker-opts.sh /opt/kubernetes/bin/  (当前目录是/usr/local)

mv flanneld /opt/kubernetes/bin/

vim /opt/kubernetes/cfg/flanneld  (新建一个配置文件,而不是解压出来的falnneld文件)


FLANNEL_OPTIONS=”–etcd-endpoints=https://192.168.137.104:2379,https://192.168.137.105:2379,https://192.168.137.106:2379 \
-etcd-cafile=/opt/kubernetes/ssl/ca.pem \
-etcd-certfile=/opt/kubernetes/ssl/etcd.pem \
-etcd-keyfile=/opt/kubernetes/ssl/etcd-key.pem”


  • 配置flannel服务文件

[Unit]
Description=Flanneld overlay address etcd agent
After=network-online.target network.target
Before=docker.service

[Service]
Type=notify
EnvironmentFile=/opt/kubernetes/cfg/flanneld
ExecStart=/opt/kubernetes/bin/flanneld –ip-masq $FLANNEL_OPTIONS
ExecStartPost=/opt/kubernetes/bin/mk-docker-opts.sh -k DOCKER_NETWORK_OPTIONS -d /run/flannel/subnet.env
Restart=on-failure

[Install]
WantedBy=multi-user.target

红色的是我们新建的flannel配置文件,蓝色是命令相关。需要拷贝到其他节点,并把位置对应好。


  • 分发配置文件

1.mk-docker-opts.sh

ansible client -m copy -a “src=/opt/kubernetes/bin/docker-opts.sh dest=/opt/kubernetes/bin/ mode=777”

2.flanneld命令文件

ansible client -m copy -a “src=/opt/kubernetes/bin/flanneld dest=/opt/kubernetes/bin/ mode=777”

3.flanneldp配置文件

ansible client -m copy -a “src=/opt/kubernetes/cfg/flanneld dest=/opt/kubernetes/cfg/ mode=777”

4.flanneld.service服务文件

ansible client -m copy -a “src=/usr/lib/systemd/system/flanneld.service dest=/usr/lib/systemd/system/flanneld.service mode=777”


  • 配置docker使用flannel网络

[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
BindsTo=containerd.service
After=network-online.target firewalld.service
Wants=network-online.target

[Service]
Type=notify
EnvironmentFile=/run/flannel/subnet.env
ExecStart=/usr/bin/dockerd $DOCKER_NETWORK_OPTIONS
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
StartLimitBurst=3
StartLimitInterval=60s
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
Delegate=yes
KillMode=process

[Install]
WantedBy=multi-user.target

红色部分是修改部分

  • 分发docker.service配置文件

ansible client -m copy -a “src=/usr/lib/systemd/system/docker.service dest=/usr/lib/systemd/system/ mode=777 backup=yes

backup=yes 将原来的已存在的备份

  • 所有节点启动flanned服务

ansible client -m shell -a “service flanneld start”

ansible client -m shell -a “chkconfig flanneld on”

  • 最后重启docker让flanneld为其分配子网

由于service配置文件修改需要提前daemon-reload

ansible client -m shell -a ” systemctl daemon-reload && service docker restart”

验证

查看master-1网卡情况

查看client-1网卡情况

查看client-2网卡情况

可以看到docker0 和flannel.1在同一网段。

master-1 ping 其他两个主机的docker-0网段

 

 

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Loading...