k8s部署Flannel网络篇(k8s篇二)

文章目录

    • 前言
          • 环境
          • flannel是什么?
          • flannel的工作原理
    • 部署
    • 为其他节点配置

前言

环境

在上一篇中我们已经部署了etcd集群,我们仍然在之前的基础之上做配置,所有的环境还是沿用之前的,在这就不多说了。

flannel是什么?

Flannel实质上是一种“覆盖网络(overlay network)”,也就是将TCP数据包装在另一种网络包里面进行路由转发和通信,目前已经支持UDP、VxLAN、AWS VPC和GCE路由等数据转发方式。
---------------------------------------------------------------------------------------------------

所谓的覆盖网络:覆盖网络(overlay network [1] )简单说来覆盖网络就是应用层网络,它是面向应用层的,不考虑或很少考虑网络层,物理层的问题。覆盖网络允许对没有IP地址标识的目的主机路由信息,例如:Freenet和DHT(分布式哈希表)可以路由信息到一个存储特定文件的结点,而这个结点的IP地址事先并不知道。比如说,P2P就是一种覆盖网络P2P是集中分散分形概念的同行对等覆盖网络,网络覆盖就是指用户能够接收到网络信号的范围。比如说网络覆盖10米半径,就是指以发射点为圆心10米半径内的设备都可以收到信号。通常指无线信号网络,如手机网络,无线网络等设备的有效信号接收范围

flannel的工作原理

数据从源容器中发出后,经由所在主机的docker0虚拟网卡转发到flannel0虚拟网卡,这是个P2P的虚拟网卡,flanneld服务监听在网卡的另外一端。
Flannel通过Etcd服务维护了一张节点间的路由表,详细记录了各节点子网网段 。
源主机的flanneld服务将原本的数据内容UDP封装后根据自己的路由表投递给目的节点的flanneld服务,数据到达以后被解包,然后直接进入目的节点的flannel0虚拟网卡,然后被转发到目的主机的docker0虚拟网卡,最后就像本机容器通信一下的有docker0路由到达目标容器。

部署

将flannel二进制文件解压并将文件移动到相应位置,flannel压缩包可以在etcd篇中的百度网盘地址处获取

tar -zxvf flannel-v0.10.0-linux-amd64.tar.gz
mkdir /k8s/flannel/{bin,config,ssl} -p
mv flanneld mk-docker-opts.sh /k8s/flannel/bin/

向 etcd 写入集群 Pod 网段信息

/k8s/etcd/bin/etcdctl \
--ca-file=/k8s/etcd/ssl/ca.pem --cert-file=/k8s/etcd/ssl/server.pem \
--key-file=/k8s/etcd/ssl/server-key.pem \
--endpoints="http://192.168.1.250:2379,http://192.168.1.251:2379,http://192.168.1.252:2379" \
set /coreos.com/network/config  '{ "Network": "10.10.0.0/16", "Backend": {"Type": "vxlan"}}'
  • 写入的 Pod 网段 ${CLUSTER_CIDR} 必须是 /16 段地址,必须与 kube-controller-manager 的 –cluster-cidr 参数值一致;

配置Flannel
cd /k8s/etcd/ssl/
cp *.pem /k8s/flannel/ssl/
vi /k8s/flannel/config/flanneld
FLANNEL_OPTIONS="--etcd-endpoints=http://192.168.1.250:2379,http://192.168.1.251:2379,http://192.168.1.252:2379 -etcd-cafile=/k8s/flannel/ssl/ca.pem -etcd-certfile=/k8s/flannel/ssl/server.pem -etcd-keyfile=/k8s/flannel/ssl/server-key.pem"

创建 flanneld 的 systemd unit 文件

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

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

[Install]
WantedBy=multi-user.target

修改Docker文件,在docker启动处指定子网段

vi /usr/lib/systemd/system/docker.service 

k8s部署Flannel网络篇(k8s篇二)_第1张图片
启动flannel,重启docker

systemctl daemon-reload
systemctl enable flanneld
systemctl start flanneld
systemctl restart docker

查看启动状态

systemctl status flanneld
journalctl -xe -u flanneld

日志都是Info级别
k8s部署Flannel网络篇(k8s篇二)_第2张图片
k8s部署Flannel网络篇(k8s篇二)_第3张图片
查看是否生效

ip add

若出现以下状态证明成功
k8s部署Flannel网络篇(k8s篇二)_第4张图片

为其他节点配置

cd /k8s/
scp -r flannel 192.168.1.251:/k8s/
scp -r flannel 192.168.1.252:/k8s/
scp /usr/lib/systemd/system/docker.service  192.168.1.251:/usr/lib/systemd/system/docker.service 
scp /usr/lib/systemd/system/docker.service  192.168.1.252:/usr/lib/systemd/system/docker.service
scp /usr/lib/systemd/system/flanneld.service  192.168.1.251:/usr/lib/systemd/system/flanneld.service 
scp /usr/lib/systemd/system/flanneld.service  192.168.1.252:/usr/lib/systemd/system/flanneld.service 


> 感谢k8s中文社区中 https://www.kubernetes.org.cn/4963.html 文章提供的信息帮助

你可能感兴趣的:(centos,k8s,flannel)