K8S系列(二)二进制部署(四)之Flannal

7 篇文章 1 订阅
6 篇文章 0 订阅

K8S系列(二)二进制部署(四)之Flannel

上一篇: K8S系列(二)二进制部署(三)之Node节点

下一篇: K8S系列(三)-DashboardUI部署

一、 介绍

1. 熟悉Docker的我们都知道,Docker安装成功之后是有一个独立的docker0的网卡
2. 但是每个node节点的docker0都一样,那么我们是怎么保证不同节点内的容器怎么互相访问呢?
3. 所以flannal就是为了解决这个问题的,使用flannel来创建一个新的共享网卡,然后集群内所有节点都共享
这个网络,那么就在同一个网段下了,就可以互相访问了

二、 准备工作

2.1 往etcd写入共享网络的网段信息

ETCDCTL_API=2 \ #因为1.18版本是基于etcd的V3——api的,我们要使用etcd的v2版本的api
/opt/etcd/bin/etcdctl \
--ca-file=/opt/etcd/ssl/ca.pem \
--cert-file=/opt/etcd/ssl/etcd.pem \
--key-file=/opt/etcd/ssl/etcd-key.pem \
--endpoints="https://192.168.3.10:2379,https://192.168.3.11:2379,https://192.168.3.12:2379" \
set /coreos.com/network/config  \
'{ "Network": "172.17.0.0/16", "Backend": {"Type": "vxlan"}}'

2.2 检查一下是否写入成功

ETCDCTL_API=2 \
/opt/etcd/bin/etcdctl \
--ca-file=/opt/etcd/ssl/ca.pem \
--cert-file=/opt/etcd/ssl/etcd.pem \
--key-file=/opt/etcd/ssl/etcd-key.pem \
--endpoints="https://192.168.3.10:2379,https://192.168.3.11:2379,https://192.168.3.12:2379"  \
get /coreos.com/network/config

-----------
{ "Network": "172.17.0.0/16", "Backend": {"Type": "vxlan"}}
#如果出现一下字样就表示写入成功

三、 部署

3.1 创建工作目录并处理执行文件

1. mkdir -p /opt/falnnel/{bin,cfg}  ##每个node节点创建
2. wget https://github.com/coreos/flannel/releases/download/v0.10.0/flannel-v0.10.0-linux-amd64.tar.gz ##在master节点的 /sw/下面
3. cp flanneld mk-docker-opts.sh /opt/falnnel/bin/ ##拷贝执行文件
4. cat > /opt/falnnel/cfg/flanneld << EOF
FLANNEL_OPTIONS="--etcd-endpoints=https://192.168.3.10:2379,https://192.168.3.11:2379,https://192.168.3.12:2379 \
--etcd-cafile=/opt/etcd/ssl/ca.pem \
--etcd-certfile=/opt/etcd/ssl/etcd.pem \
--etcd-keyfile=/opt/etcd/ssl/etcd-key.pem"
EOF ##创建配置文件

3.2 创建服务启动文件

cat > /usr/lib/systemd/system/flanneld.service << EOF
[Unit]
Description=Flanneld overlay address etcd agent
After=network-online.target network.target
Before=docker.service

[Service]
Type=notify
EnvironmentFile=/opt/falnnel/cfg/flanneld
ExecStart=/opt/falnnel/bin/flanneld --ip-masq $FLANNEL_OPTIONS
ExecStartPost=/opt/falnnel/bin/mk-docker-opts.sh -k DOCKER_NETWORK_OPTIONS -d /run/flannel/subnet.env ##这一行在master节点不需要,因为master节点没装docker
Restart=on-failure

[Install]
WantedBy=multi-user.target

EOF

3.3 其他节点处理

1. scp flanneld mk-docker-opts.sh root@192.168.3.11:/opt/falnnel/bin/ &&scp flanneld mk-docker-opts.sh root@192.168.3.12:/opt/falnnel/bin/ ##拷贝执行文件
2. scp flanneld root@192.168.3.11:/opt/falnnel/cfg/ && scp flanneld root@192.168.3.11:/opt/falnnel/cfg/ ##拷贝配置文件
3. scp /usr/lib/systemd/system/flanneld.service root@192.168.3.11:/usr/lib/systemd/system/ && scp /usr/lib/systemd/system/flanneld.service root@192.168.3.12:/usr/lib/systemd/system/
## 拷贝服务启动文件
4. 在docker-node节点看 3.2中服务文件的配置,需要加上一行

3.3 指定Docker启动子网段(装了docker的工作节点需要)

1. vim /usr/lib/systemd/system/docker.service 
2. 在Type=notify 下面加上一行 EnvironmentFile=/run/flannel/subnet.env
3. 在ExecStart=/usr/bin/dockerd 后面追加一个 $DOCKER_NETWORK_OPTIONS
4. 此时应该长这样(博主移除了默认的注释)
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
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
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s

[Install]
WantedBy=multi-user.target

3.4 启动并设置开机启动

1. systemctl daemon-reload
2. systemctl start flanneld
3. systemctl enable flanneld
4. systemctl restart docker ##一定要重启Docker

四、 检查网络状态

4.1 检查flannel网卡是否在一个网段

ip addr,从下图可以看到没啥问题

在这里插入图片描述

4.2 检查node节点的docker和flannel是否在同一个网段

在这里插入图片描述

4.3 基于flannel网段全部都ping一下

4.3.1 master-ping Node1/Node2节点docker

ping 172.17.23.1

在这里插入图片描述

ping 172.17.23.1

在这里插入图片描述

4.3.2 Node1/Node2节点互ping

Node2 : ping 172.17.23.1

在这里插入图片描述

Node2 : ping 172.17.23.1

在这里插入图片描述

五、 部署一个nginx来测试

K8S系列(一)kubeadm部署

这里博主就不展示怎么启动了,请查看原来的文章,有说如果启动测试的nginx

六、 总结

1. 博主的5篇k8s部署系列文章到这里就告一段落了
2. 接下来博主会介绍一下k8s的pod、service、deployment等等
3. 如有不对的地方欢迎指正,希望能帮到大家
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值