3.kubernetes的CNI网络插件-Flannel
目录
1.1.K8S的CNI网络插件-Flannel
集群规划
主机名 | 角色 | ip |
HDSS7-21.host.com | flannel | 10.4.7.21 |
HDSS7-22.host.com | flannel | 10.4.7.22 |
下载软件、解压、软链接
官网下载地址:https://github.com/coreos/flannel/releases/download/v0.11.0/flannel-v0.11.0-linux-amd64.tar.gz
HDSS7-21.host.com上:
[root@hdss7- ~]# cd /opt/src/
[root@hdss7- ~]# wget https://github.com/coreos/flannel/releases/download/v0.11.0/flannel-v0.11.0-linux-amd64.tar.gz
[root@hdss7- ~]# mkdir /opt/flannel-v0.11.0
[root@hdss7- ~]# tar zxvf flannel-v0.11.0-linux-amd64.tar.gz -C /opt/flannel-v0.11.0/
[root@hdss7- ~]# ln -s /opt/flannel-v0.11.0 /opt/flannel
[root@hdss7- ~]# ll /opt/|grep flannel
lrwxrwxrwx root root Jun : flannel -> flannel-v0.11.0/
drwxr-xr-x root root Jun : flannel-v0.11.0
最终目录结构
[root@hdss7- opt]# tree -L
.
├── containerd
│ ├── bin
│ └── lib
├── etcd -> etcd-v3.1.20
├── etcd-v3.1.20
│ ├── certs
│ ├── Documentation
│ ├── etcd
│ ├── etcdctl
│ ├── etcd-server-startup.sh
│ ├── README-etcdctl.md
│ ├── README.md
│ └── READMEv2-etcdctl.md
├── flannel -> flannel-v0.11.0/
├── flannel-v0.11.0
│ ├── certs
│ ├── flanneld
│ ├── mk-docker-opts.sh
│ └── README.md
├── kubernetes -> kubernetes-v1.15.2/
├── kubernetes-v1.15.2
│ ├── addons
│ ├── LICENSES
│ └── server
└── src
├── etcd-v3.1.20-linux-amd64.tar.gz
├── flannel-v0.11.0-linux-amd64.tar.gz
└── kubernetes-server-linux-amd64-v1.15.2.tar.gz
拷贝证书
各运算节点上:
/opt/flannel/certs
[root@hdss7- certs]# scp hdss7-:/opt/certs/ca.pem .
[root@hdss7- certs]# scp hdss7-:/opt/certs/client.pem .
[root@hdss7- certs]# scp hdss7-:/opt/certs/client-key.pem .
注:其他运算节点也需要ca.pem client.pem client-key.pem
创建配置
[root@hdss7- flannel]# vi subnet.env
FLANNEL_NETWORK=172.7.0.0/
FLANNEL_SUBNET=172.7.21.1/24
FLANNEL_MTU=
FLANNEL_IPMASQ=false
注:其他运算节点需将FLANNEL_SUBNET改成对应的网段,比如:10.4.7.22配置FLANNEL_SUBNET=172.7.22.1/24
创建启动脚本
[root@hdss7- flannel]# vim flanneld.sh
#!/bin/sh
./flanneld \
--public-ip=10.4.7.21 \
--etcd-endpoints=https://10.4.7.12:2379,https://10.4.7.21:2379,https://10.4.7.22:2379 \
--etcd-keyfile=./certs/client-key.pem \
--etcd-certfile=./certs/client.pem \
--etcd-cafile=./certs/ca.pem \
--iface=eth0 \
--subnet-file=./subnet.env \
--healthz-port=
注:flannel集群各主机的启动脚本略有不同,部署其他节点注意修改,比如10.4.7.22 --public-ip=10.4.7.22
检查配置、权限、创建日志目录
[root@hdss7- flannel]# chmod +x /opt/flannel/flanneld.sh
[root@hdss7- flannel]# mkdir -p /data/logs/flanneld
操作etcd,增加host-gw(适用于运算节点在同一个二层模型,三选一)
HDSS7-21.host.com上:
[root@hdss7- etcd]# ./etcdctl set /coreos.com/network/config '{"Network": "172.7.0.0/16", "Backend": {"Type": "host-gw"}}'
{"Network": "172.7.0.0/16", "Backend": {"Type": "host-gw"}}
[root@hdss7- etcd]# ./etcdctl get /coreos.com/network/config
{"Network": "172.7.0.0/16", "Backend": {"Type": "host-gw"}}
创建supervisor配置
HDSS7-21.host.com上:
[root@hdss7- ~]# vi /etc/supervisord.d/flannel.ini
[program:flanneld-7-21]
command=/opt/flannel/flanneld.sh ; the program (relative uses PATH, can take args)
numprocs= ; number of processes copies to start (def )
directory=/opt/flannel ; directory to cwd to before exec (def no cwd)
autostart=true ; start at supervisord start (default: true)
autorestart=true ; retstart at unexpected quit (default: true)
startsecs= ; number of secs prog must stay running (def. )
startretries= ; max # of serial start failures (default )
exitcodes=, ; 'expected' exit codes for process (default ,)
stopsignal=QUIT ; signal used to kill process (default TERM)
stopwaitsecs= ; max num secs to wait b4 SIGKILL (default )
user=root ; setuid to this UNIX account to run the program
redirect_stderr=true ; redirect proc stderr to stdout (default false)
stdout_logfile=/data/logs/flanneld/flanneld.stdout.log ; stderr log path, NONE for none; default AUTO
stdout_logfile_maxbytes=64MB ; max # logfile bytes b4 rotation (default 50MB)
stdout_logfile_backups= ; # of stdout logfile backups (default )
stdout_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default )
stdout_events_enabled=false ; emit events on stdout writes (default false)
注:hdss7-22.host.com需要修改成[program:flanneld-7-22]
启动服务并检查
[root@hdss7- flannel]# supervisorctl update
[root@hdss7- flannel]# supervisorctl status
再次验证集群,pod之间网络互通
[root@hdss7- ~]# ping 172.7.22.2
PING 172.7.22.2 (172.7.22.2) () bytes of data.
bytes from 172.7.22.2: icmp_seq= ttl= time=8.50 ms
bytes from 172.7.22.2: icmp_seq= ttl= time=2.58 ms
bytes from 172.7.22.2: icmp_seq= ttl= time=4.40 ms
bytes from 172.7.22.2: icmp_seq= ttl= time=0.353 ms
bytes from 172.7.22.2: icmp_seq= ttl= time=0.420 ms
flannel vxlan模型(适用于运算节点不在同一个二层,三选一)
.停掉flanneld服务
[root@hdss7- ~]# supervisor stop flanneld--
[root@hdss7- ~]# supervisor stop flanneld--
.删除host-gw模型创建的路由
[root@hdss7- ~]# route del -net 172.7.21.0/ gw 10.4.7.21
[root@hdss7- ~]# route del -net 172.7.22.0/ gw 10.4.7.22
.修改etcd
[root@hdss7- ~]# cd /opt/etcd
[root@hdss7- etcd]# ./etcdctl get /coreos.com/network/config
[root@hdss7- etcd]# ./etcdctl rm /coreos.com/network/config
[root@hdss7- etcd]# ./etcdctl set /coreos.com/network/config '{"Network": "172.7.0.0/16", "Backend": {"Type": "VxLAN"}}'
[root@hdss7- etcd]# supervisor start flanneld--
[root@hdss7- ~]# supervisor start flanneld--
flannel 直接路由模型(自动识别是否在同一个二层模型,如果是同一个二层模型走host-gw,如果在同一个二层模型走vxlan模型,三选一)
.停掉flanneld服务
[root@hdss7- ~]# supervisor stop flanneld--
[root@hdss7- ~]# supervisor stop flanneld--
.修改etcd
[root@hdss7- ~]# cd /opt/etcd
[root@hdss7- etcd]# ./etcdctl get /coreos.com/network/config
[root@hdss7- etcd]# ./etcdctl rm /coreos.com/network/config
[root@hdss7- etcd]# ./etcdctl set /coreos.com/network/config '{"Network": "172.7.0.0/16", "Backend": {"Type": "VxLAN","Directrouting": true}}'
[root@hdss7- etcd]# supervisor start flanneld--
[root@hdss7- ~]# supervisor start flanneld--
在各运算节点上优化iptables规则
- 优化SNAT规则,各运算节点之间的各POD之间的网络通信不再出网
[root@hdss7- ~]# iptables -t nat -D POSTROUTING -s 172.7.21.0/ ! -o docker0 -j MASQUERADE
[root@hdss7- ~]# iptables -t nat -I POSTROUTING -s 172.7.21.0/ ! -d 172.7.0.0/ ! -o docker0 -j MASQUERADE
10.4.7.21主机上的,来源是172.7.21.0/24段的docker的ip,目标ip不是172.7.0.0/16段,网络发包不从docker0桥设备出站的,才进行SNAT转换
各运算节点保存iptables规则
[root@hdss7- ~]# iptables-save > /etc/sysconfig/iptables
、
返回顶部
3.kubernetes的CNI网络插件-Flannel的更多相关文章
- 第十章 Kubernetes的CNI网络插件--flannel
1.简介 1.1前言 Kubernetes设计了网络模型,但却将它的实现讲给了网络插件,CNI网络插件最重要的功能就是实现Pod资源能够跨主机通信 常见的CNI网络插件如下: Flannel: Cac ...
- Kubernetes CNI网络插件
CNI 容器网络接口,就是在网络解决方案由网络插件提供,这些插件配置容器网络则通过CNI定义的接口来完成,也就是CNI定义的是容器运行环境与网络插件之间的接口规范.这个接口只关心容器的网络连接,在创建 ...
- kubernetes进阶(二)核心网络插件Flannel
网络插件Flannel介绍:https://www.kubernetes.org.cn/3682.html 首先,flannel利用Kubernetes API或者etcd用于存储整个集群的网络配置, ...
- 安装cni网络插件-非必须
安装cni网络插件 安装cni # 安装 cni # 百度云链接:https://pan.baidu.com/s/1-PputObLs5jouXLnuBCI6Q 密码:tzqm cd /server/ ...
- kubernetes 配置网络插件 flannel
概述 在学习docker时知道docker有四种常用的网络模型 bridge:桥接式网络 joined:联盟式网络,共享使用另外一个容器的网络名称空间 opened:容器直接共享使用宿主机的网络名称空 ...
- Kubernetes 学习18配置网络插件flannel
一.概述 1.我们在学习docker时知道docker有四种常用的网络模型 a.bridge:桥接式网络 b.joined:联盟式网络,共享使用另外一个容器的网络名称空间 b.opened:容器直接共 ...
- Kubernetes网络插件Flannel的三种工作模式
跨主机通信的一个解决方案是Flannel,由CoreOS推出,支持3种实现:UDP.VXLAN.host-gw 一.UDP模式(性能差) 核心就是通过TUN设备flannel0实现(TUN设备是工作在 ...
- k8s之网络插件flannel及基于Calico的网络策略
1.k8s网络通信 a.容器间通信:同一个pod内的多个容器间的通信,通过lo即可实现; b.pod之间的通信:pod ip <---> pod ip,pod和pod之间不经过任何转换即可 ...
- k8s系列---网络插件flannel
跨节点通讯,需要通过NAT,即需要做源地址转换. k8s网络通信: 1) 容器间通信:同一个pod内的多个容器间的通信,通过lo即可实现: 2) pod之间的通信,pod ip <---> ...
随机推荐
- 百度地图结合ECharts实现复杂覆盖物(Overlay)
先来看效果图 一 前置知识 官方Overlay-覆盖物的抽象基类 方法 返回值 描述 initialize(map: Map) HTMLElement 抽象方法,用于初始化覆盖物,当调用map.add ...
- This的关键字的使用
this: 1.可以用来修饰属性 方法 构造器 2.this理解为当前对象或当前正在创建的对象. 3.可以在构造器中通过this()形参的方式显示的调用本类中其他重载的指定的构造器 要求: 在构造器 ...
- HFish开源蜜罐搭建
简介 Hfish是一款开源的蜜罐,包含了多种仿真服务,如:redis.ssh.telnet.web服务等,支持单机部署.docker部署.集群部署等形式.不属于高交互蜜罐的范畴,只是用来体验一把.放在 ...
- Linux题目
1.删除某目录下所有文件,只保留指定文件. 例:假设/abc文件夹下有a1.a2....a10文件,保留a5和a6文件,其他全部删除 [root@localhost abc]# touch a{1.. ...
- Rocket - debug - TLDebugModule
https://mp.weixin.qq.com/s/EhUb1z5oiIw6dJ-90ifDJA 简单介绍TLDebugModule中的实现. 1. device device是一个设备描述符,包含 ...
- jchdl - RTL实例 - MOS6502 ALU (Verilog)
https://mp.weixin.qq.com/s/jLUz757FQZjMEYzYb2AIww MOS6502是简单,但是曾经相当流行的一款CPU.网上有很多模拟程序可供学习使用.这里使用一个 ...
- Docker 容器优雅终止方案
原文链接:Docker 容器优雅终止方案 作为一名系统重启工程师(SRE),你可能经常需要重启容器,毕竟 Kubernetes 的优势就是快速弹性伸缩和故障恢复,遇到问题先重启容器再说,几秒钟即可恢复 ...
- Sublime Text3 注册码(Windows/Build 3176版本)| 开发工具
转自:dushusir.com 1.修改hosts文件(路径:C:\Windows\System32\drivers\etc): 0.0.0.0 www.sublimetext.com 0.0.0.0 ...
- ASP.NET给图片自动添加水印
先建一个类,感觉注释已经很详细了,有不懂的欢迎评论 using System; using System.Collections.Generic; using System.Drawing; usin ...
- Java实现 LeetCode 668 乘法表中第k小的数(二分)
668. 乘法表中第k小的数 几乎每一个人都用 乘法表.但是你能在乘法表中快速找到第k小的数字吗? 给定高度m .宽度n 的一张 m * n的乘法表,以及正整数k,你需要返回表中第k 小的数字. 例 ...