文章目录

  • 一、Flannel简介
  • 二、Flannel网络概述
  • 三、部署

一、Flannel简介

1、当一个k8s集群创建好后一般会存在三种IP,分别是:Pod IP、Node IP、Cluster IP

Cluster IP之下包含多个Node IP,而一个Node IP之下又包含多个Pod IP,同一个Pod包含多个容器(这些容器的网络都在同一个命名空间,因此可以自由的通信),同一个Node包含多个Pod,这些Pod又通过veth pair技术与同一个cni网桥进行连接,通常这个cni网桥就是我们熟知的docker0网卡,这个是在你安装docker后就会创建在宿主机上的一个虚拟网卡,因此相同Node节点下的Pod又可以通过cni网桥进行通信。
但是不同Node节点下的Pod又是如何进行通信的,尤其是在成千上万个容器的情况下进行通信,就这需要用到flannel网络插件来解决这个问题。

2、Flannel是CoreOS团队针对Kubernetes设计的一个网络规划服务,简单来说,它的功能是让集群中的不同节点主机创建的Docker容器都具有全集群唯一的虚拟IP地址。

3、在默认的Docker配置中,每个节点上的Docker服务会分别负责所在节点容器的IP分配。这样导致的一个问题是,不同节点上容器可能获得相同的内外IP地址。并使这些容器之间能够之间通过IP地址相互找到,也就是相互ping通。

4、Flannel的设计目的就是为集群中的所有节点重新规划IP地址的使用规则,从而使得不同节点上的容器能够获得同属一个内网且不重复的IP地址,并让属于不同节点上的容器能够直接通过内网IP通信。

二、Flannel网络概述

Overlay Network:
覆盖网络,在基础网络上叠加的一种虚拟网络技术模式,该网络中的主机通过虚拟链路连接起来
类似VPN隧道,原理为在物理网络上实现的逻辑网络

VXLAN:
将源数据包封装到UDP中,并使用基础网络的IP/MAC作为外层包头进行封装,然后在以太网上传输,到达目的地后由隧道断电解封并将数据发给目标地址

Flannel:
是Overlay网络的一种,也是将源数据包封装在另一种网络包中进行路由转发和通信,目前已支持UDP、VXLAN、AWS VPN和GCE路由等数据转发方式


flannel原理简介:
容器10.1.15.2/24访问10.0.20.3/24,经过所在主机的docker0,也就相当于这个容器的网关,转发到flannel0虚拟网卡,经过flanneld进行处理,将源容器的ip和目的容器的ip封装成内部ip,将源物理网卡的网关和目的物理网卡的网关封装成外部ip,并同时封装其MAC地址,源主机的flanneld服务将原本的数据内容UDP封装后根据自己的路由表投递给目的节点的flanneld服务,数据到达以后被解包,然后进入目的节点flannel0虚拟网卡,然后被转发到目的主机的docker0虚拟网卡,传递到对应ip的容器

三、部署

首先两个node节点需要先安装docker引擎

安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2设置阿里云镜像源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo安装Docker-CE
vim /etc/selinux/config
SELINUX=disabledyum install -y docker-cesystemctl start docker.service
systemctl enable docker.service

镜像加速

搜索容器镜像服务

网络优化echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf
sysctl -psystemctl restart network
systemctl restart docker

master配置
需要在有证书的目录下使用此命令
写入分配的子网段到ETCD中,供flannel使用

[root@localhost ~]# cd k8s/etcd-cert/[root@localhost ~]# /opt/etcd/bin/etcdctl --ca-file=ca.pem --cert-file=server.pem --key-file=server-key.pem --endpoints="https://192.168.111.10:2379,https://192.168.111.30:2379,https://192.168.111.40:2379" set /coreos.com/network/config '{ "Network": "172.17.0.0/16", "Backend": {"Type": "vxlan"}}'
拷贝到所有node节点(只需要部署在node节点即可)
[root@localhost k8s]# scp flannel-v0.10.0-linux-amd64.tar.gz root@192.168.111.30:/root
[root@localhost k8s]# scp flannel-v0.10.0-linux-amd64.tar.gz root@192.168.111.40:/root

所有node节点操作解压

[root@localhost ~]# tar zxvf flannel-v0.10.0-linux-amd64.tar.gz flanneld
mk-docker-opts.sh
README.md
k8s工作目录
[root@localhost ~]# mkdir /opt/kubernetes/{cfg,bin,ssl} -p
[root@localhost ~]# mv mk-docker-opts.sh flanneld /opt/kubernetes/bin/
编写flannel启动脚本
[root@localhost ~]# vim flannel.sh
#!/bin/bashETCD_ENDPOINTS=${1:-"http://127.0.0.1:2379"}cat <<EOF >/opt/kubernetes/cfg/flanneldFLANNEL_OPTIONS="--etcd-endpoints=${ETCD_ENDPOINTS} \
-etcd-cafile=/opt/etcd/ssl/ca.pem \
-etcd-certfile=/opt/etcd/ssl/server.pem \
-etcd-keyfile=/opt/etcd/ssl/server-key.pem"EOFcat <<EOF >/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=/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.targetEOFsystemctl daemon-reload
systemctl enable flanneld
systemctl restart flanneld
开启flannel网络功能
[root@localhost ~]# bash flannel.sh https://192.168.111.10:2379,https://192.168.111.30:2379,https://192.168.111.40:2379
配置docker连接flannel
[root@localhost ~]# vim /usr/lib/systemd/system/docker.service[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
EnvironmentFile=/run/flannel/subnet.env
ExecStart=/usr/bin/dockerd $DOCKER_NETWORK_OPTIONS -H fd:// --containerd=/run/containerd/containerd.sock
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=alwayssystemctl daemon-reload
systemctl restart docker
验证下docker网络和flannel网络是否在同一个网段
ifconfig



拉取镜像然后进入容器去ping另一个不同网段的容器

docker run -it centos:7 /bin/bash
yum -y install net-toolsping 172.17.39.1


如果这里ping的时候出现卡住了需要这么解决
所有的node节点按顺序依次重启服务

systemctl restart flanneld.service
systemctl restart network
systemctl restart docker

然后再次进入容器去ping就可以了

k8s——flannel网络相关推荐

  1. 解决 k8s flannel网络 一直 Init:ImagePullBackOff和coredns状态为Pending

    安装好k8s之后 一直都是NoReady的状态 watch kubectl get pod -n kube-system -o wide 查看pod 是因为 kube-flannel-ds-zw4h8 ...

  2. 理解Kubernetes网络之Flannel网络

    理解Kubernetes网络之Flannel网络 第一次采用kube-up.sh脚本方式安装的Kubernetes cluster目前运行良好,master node上的组件状态也始终是"没 ...

  3. kubernetes (k8s)的二进制部署单节点(etcd和flannel网络)

    文章目录 1 常见的k8s部署方式 2 环境准备 2.1 拓扑 2.2 所有主机关闭防火墙,selinux,swap 2.3 所有主机配置主机名,并再maser上做主机映射 2.4 所有主机将桥接的I ...

  4. K8s集群部署(四)------ Flannel网络部署

    所有节点都要部署Flannel网络,在所有节点操作. 1.为Flannel生成证书 [root@k8s-master ssl]# pwd /usr/local/src/ssl[root@k8s-mas ...

  5. k8s网络之Flannel网络(三)

    目录 1 简介 1.1 简单总结Flannel的特点 2 Flannel对网络要求提出的解决办法 2.1 互相不冲突的ip 2.2 Pod之间互相访问 3 Flannel架构原理 4 通信流程 4.1 ...

  6. 二进制安装K8S(四):部署flannel网络

    一.master编写flannel脚本: vim /root/scripts/flannel.sh #!/bin/bash cd /opt/kubernetes/ssl/ #写入分配的子网网段 /op ...

  7. 『中级篇』k8s基础网络Cluster Network(66)

    原创文章,欢迎转载.转载请注明:转载自IT人故事会,谢谢! 原文链接地址:『中级篇』k8s基础网络Cluster Network(66) 通过国人大神的一键安装k8s集群安装了3个master节点和3 ...

  8. k8s网络架构图_唯品会基于Kubernetes(k8s)网络方案演进

    VIP PaaS在接近两年时间里,基于kubernetes主要经历四次网络方案的变迁: 1. kubernetes + flannel 2. 基于Docker libnetwork的网络定制 3. k ...

  9. 从零开始入门 K8s | Kubernetes 网络概念及策略控制

    作者 | 阿里巴巴高级技术专家 叶磊 一.Kubernetes 基本网络模型 本文来介绍一下 Kubernetes 对网络模型的一些想法.大家知道 Kubernetes 对于网络具体实现方案,没有什么 ...

最新文章

  1. 技术15期:4种常用的可视化技术【web前端】
  2. ServiceHot告诉你美国的程序员们各编程语言薪资情况
  3. Tomexam在线考试系统 2.1
  4. xhtml的行内描述性元素
  5. Java 匿名内部类理解
  6. ctype函数_PHP ctype_cntrl()函数与示例
  7. java getdelay_java中DelayQueue的一个使用陷阱分析
  8. ASP.NET 安全性
  9. JavaScript跨域问题分析与总结_直来直往_百度空间
  10. 关于PF_INET和AF_INET的区别
  11. 2020网赚模式不再亮眼,中小开发者如何在红海竞争中活下去?
  12. 用C语言解9×9数独 (亲测可用)(思路分析)
  13. 一文读懂中国的影子银行
  14. 微信小程序阅读器功能
  15. 助力“互联网+智慧医疗“,医真云致力成为全球领先的医疗云服务提供者
  16. android mac 照片恢复,万兴安卓照片恢复软件(Mac版本)指南
  17. 西安天讯:怎样添加百度蜘蛛访问网站日志log日志
  18. php30pro移动电源,30分钟让P30 Pro近满血 华为超级快充移动电源评测:迄今最强“奶妈”...
  19. java keytool用法_Java keytool的用法 | Soo Smart!
  20. 图书信息管理系统c/c++

热门文章

  1. 基于python的网贷平台Prosper数据分析
  2. css3 移动端video视频全屏,横屏展示,适配微信/打包成app
  3. ChatGPT能够干翻谷歌吗?
  4. 钢铁行业经销商商城系统:完善钢材管控方案,轻松实现控价和防伪
  5. 全球与中国汽车内饰牛皮革市场发展调研及未来前景预测报告2022-2028年
  6. 坐地铁,玩Android
  7. 《降龙之剑》刷马坐标 BOSS坐标,鉴定出好马的时间段
  8. Mac配置item2高亮颜色
  9. 未签收延误一天的快递单号是怎么查找的
  10. 关于Rasa你必须要知道的几件事