3.kubernetes的CNI网络插件-Flannel

摘要:
目录1.1.K8S的CNI网络插件-Lannel1.1.1.群集规划1.1.2.下载软件、解压缩和软链接1.1.3.最终目录结构1.1.4.复制证书1.1.5.创建配置1.1.6.创建启动脚本1.1.7.检查配置、权限并创建日志目录1.1.8.操作etcd,并添加主机gw 1.1.9.创建监控器配置1.1.10。启动服务并检查1.1.11。再次验证集群,吊舱1.1.1之间的网络互通

目录

1.1.K8S的CNI网络插件-Flannel

1.1.1.集群规划

1.1.2.下载软件、解压、软链接

1.1.3.最终目录结构

1.1.4.拷贝证书

1.1.5.创建配置

1.1.6.创建启动脚本

1.1.7.检查配置、权限、创建日志目录

1.1.8.操作etcd、增加host-gw

1.1.9.创建supervisor配置

1.1.10.启动服务并检查

1.1.11.再次验证集群,pod之间网络互通

1.1.12.在各运算节点上优化iptables规则

1.1.13.在各运算节点保存iptables规则

集群规划

主机名角色ip
HDSS7-21.host.comflannel10.4.7.21
HDSS7-22.host.comflannel10.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-21 ~]# cd /opt/src/
[root@hdss7-21 ~]# wget https://github.com/coreos/flannel/releases/download/v0.11.0/flannel-v0.11.0-linux-amd64.tar.gz
[root@hdss7-21 ~]# mkdir /opt/flannel-v0.11.0
[root@hdss7-21 ~]# tar zxvf flannel-v0.11.0-linux-amd64.tar.gz -C /opt/flannel-v0.11.0/
[root@hdss7-21 ~]# ln -s /opt/flannel-v0.11.0 /opt/flannel
[root@hdss7-21 ~]# ll /opt/|grep flannel
lrwxrwxrwx 1 root root   16 Jun  9 10:00 flannel -> flannel-v0.11.0/
drwxr-xr-x 3 root root 4096 Jun  9 10:04 flannel-v0.11.0

最终目录结构

[root@hdss7-21 opt]# tree -L 2
.
├── 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-21 certs]# scp hdss7-200:/opt/certs/ca.pem .
[root@hdss7-21 certs]# scp hdss7-200:/opt/certs/client.pem .
[root@hdss7-21 certs]# scp hdss7-200:/opt/certs/client-key.pem .

注:其他运算节点也需要ca.pem client.pem client-key.pem

创建配置

[root@hdss7-21 flannel]# vi subnet.env
FLANNEL_NETWORK=172.7.0.0/16
FLANNEL_SUBNET=172.7.21.1/24
FLANNEL_MTU=1500
FLANNEL_IPMASQ=false

注:其他运算节点需将FLANNEL_SUBNET改成对应的网段,比如:10.4.7.22配置FLANNEL_SUBNET=172.7.22.1/24

创建启动脚本

[root@hdss7-21 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=2401

注:flannel集群各主机的启动脚本略有不同,部署其他节点注意修改,比如10.4.7.22 --public-ip=10.4.7.22

检查配置、权限、创建日志目录

[root@hdss7-21 flannel]# chmod +x /opt/flannel/flanneld.sh 
[root@hdss7-21 flannel]# mkdir -p /data/logs/flanneld

操作etcd,增加host-gw(适用于运算节点在同一个二层模型,三选一)

HDSS7-21.host.com上:

[root@hdss7-21 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-21 etcd]#  ./etcdctl get /coreos.com/network/config
{"Network": "172.7.0.0/16", "Backend": {"Type": "host-gw"}}

创建supervisor配置

HDSS7-21.host.com上:

[root@hdss7-21 ~]# vi /etc/supervisord.d/flannel.ini
[program:flanneld-7-21]
command=/opt/flannel/flanneld.sh                             ; the program (relative uses PATH, can take args)
numprocs=1                                                   ; number of processes copies to start (def 1)
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=30                                                 ; number of secs prog must stay running (def. 1)
startretries=3                                               ; max # of serial start failures (default 3)
exitcodes=0,2                                                ; 'expected' exit codes for process (default 0,2)
stopsignal=QUIT                                              ; signal used to kill process (default TERM)
stopwaitsecs=10                                              ; max num secs to wait b4 SIGKILL (default 10)
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=4                                     ; # of stdout logfile backups (default 10)
stdout_capture_maxbytes=1MB                                  ; number of bytes in 'capturemode' (default 0)
stdout_events_enabled=false                                  ; emit events on stdout writes (default false) 
killasgroup=true
stopasgroup=true

注:hdss7-22.host.com需要修改成[program:flanneld-7-22]

启动服务并检查

[root@hdss7-21 flannel]# supervisorctl  update
[root@hdss7-21 flannel]# supervisorctl status

再次验证集群,pod之间网络互通

[root@hdss7-21 ~]# ping 172.7.22.2
PING 172.7.22.2 (172.7.22.2) 56(84) bytes of data.
64 bytes from 172.7.22.2: icmp_seq=1 ttl=63 time=8.50 ms
64 bytes from 172.7.22.2: icmp_seq=2 ttl=63 time=2.58 ms
64 bytes from 172.7.22.2: icmp_seq=3 ttl=63 time=4.40 ms
64 bytes from 172.7.22.2: icmp_seq=4 ttl=63 time=0.353 ms
64 bytes from 172.7.22.2: icmp_seq=5 ttl=63 time=0.420 ms

flannel vxlan模型(适用于运算节点不在同一个二层,三选一

1.停掉flanneld服务
[root@hdss7-21 ~]# supervisor stop flanneld-7-21
[root@hdss7-22 ~]# supervisor stop flanneld-7-22
2.删除host-gw模型创建的路由
[root@hdss7-21 ~]# route del -net 172.7.21.0/24 gw 10.4.7.21
[root@hdss7-22 ~]# route del -net 172.7.22.0/24 gw 10.4.7.22
3.修改etcd
[root@hdss7-21 ~]# cd /opt/etcd
[root@hdss7-21 etcd]# ./etcdctl get /coreos.com/network/config
[root@hdss7-21 etcd]# ./etcdctl rm /coreos.com/network/config
[root@hdss7-21 etcd]# ./etcdctl set /coreos.com/network/config '{"Network": "172.7.0.0/16", "Backend": {"Type": "VxLAN"}}'
[root@hdss7-21 etcd]# supervisor start flanneld-7-21
[root@hdss7-22 ~]# supervisor start flanneld-7-22

flannel 直接路由模型(自动识别是否在同一个二层模型,如果是同一个二层模型走host-gw,如果在同一个二层模型走vxlan模型,三选一)

1.停掉flanneld服务
[root@hdss7-21 ~]# supervisor stop flanneld-7-21
[root@hdss7-22 ~]# supervisor stop flanneld-7-22
2.修改etcd
[root@hdss7-21 ~]# cd /opt/etcd
[root@hdss7-21 etcd]# ./etcdctl get /coreos.com/network/config
[root@hdss7-21 etcd]# ./etcdctl rm /coreos.com/network/config
[root@hdss7-21 etcd]# ./etcdctl set /coreos.com/network/config '{"Network": "172.7.0.0/16", "Backend": {"Type": "VxLAN","Directrouting": true}}'
[root@hdss7-21 etcd]# supervisor start flanneld-7-21
[root@hdss7-22 ~]# supervisor start flanneld-7-22

 在各运算节点上优化iptables规则

  •  优化SNAT规则,各运算节点之间的各POD之间的网络通信不再出网
[root@hdss7-21 ~]# iptables -t nat -D POSTROUTING -s 172.7.21.0/24 ! -o docker0 -j MASQUERADE
[root@hdss7-21 ~]# iptables -t nat -I POSTROUTING -s 172.7.21.0/24 ! -d 172.7.0.0/16 ! -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-21 ~]# service iptables save

、 

返回顶部

免责声明:文章转载自《3.kubernetes的CNI网络插件-Flannel》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Linux-vim命令Oracle中特殊的INSERT语句下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

linux面试题目2

9./mnt目录主要用于什么?/root目录跟root用户有什么关系?/根目录与/boot目录有什么联系? 答:/mnt主要用来挂载外部设备,/root根目录是root用户的家目录,/boot目录是/根目录的子目录 10.某一天误操作,执行了rm??-rf??* ,会有哪些情况发生?请举例。 答:文件被彻底干掉,很难恢复。严重点系统瘫痪,数据全部丢失 二、...

kali系统网站部署笔记

网站放在 其他位置----计算机------var-----www----html 首先启动nginx service nginx start   然后访问127.0.0.1 就会看到Apache正在工作 启动mysql数据库 service mysql start 接着用 mysql -u root -p 连接mysql 用户名:root 密码:1234...

test命令

test命令:判断文件类型,判断文件权限,判段表达式,判断字符串,判断整数大小/相等,判断两文件新旧,inode号是否一样 判断文件类型 命令 功能 -b 文件 判断是块设备文件 -c 文件 判断是字符设备文件 -d 文件 判断是目录文件 -f 文件 判断是普通文件 -L 文件 判断是符号链接文件 -p 文件 判断是管道文...

Rsync同步时删除多余文件 [附:删除大量文件方法的效率对比]

日常运维工作中用到rsync同步两个目录时,有时会要求删除目标目录中比源目录多出的文件,这种情况下,可用到rsync的--delete参数来实现。 实例说明:在服务器A上同步/tmp/work目录到远程服务器B的/tmp/work目录下(A和B已经提前做好ssh无密码信任跳转关系了),同时删除B服务器/tmp/work目录下相比于A服务器/tmp/work...

Nginx 安装与部署配置以及Nginx和uWSGI开机自启

下载 官方网站:https://nginx.org/en/download.html Windows下安装 安装 下载后解压(切记不能含有中文路径!!),文件结构如图(我解压的路径就有中文,记得拷贝放置于英文目录下即可!): 启动 两种方法: 1) 直接双击该目录下的"nginx.exe",即可启动nginx服务器; 2) 命令行进入该文件夹,执行st...

Navicat连接mysql8.0.1版本出现1251--Client does not support authentication protocol requested by server的解决

Navicat连接mysql8.0.1版本出现1251--Client does not support authentication protocol requested by server的解决 转载自:https://blog.csdn.net/XDMFC/article/details/80263215 好不容易安装好mysql,但又出现了mysq...