K8S 之 Flannel网络插件安装

一、flannel的作用

1、CNI网络插件最主要的功能就是实现POD资源能够跨宿主机是进行能信

#test-nodes1主机无法ping通test-nodes2主机的pod容器
[[email protected] ~]# kubectl get pods -o wide
NAME              READY   STATUS    RESTARTS   AGE     IP           NODE                      NOMINATED NODE   READINESS GATES
nginx-ds1-qg45q   1/1     Running   0          2d12h   172.7.22.3   test-nodes2.cedarhd.com   <none>           <none>
nginx-ds1-whnmv   1/1     Running   0          2d12h   172.7.21.3   test-nodes1.cedarhd.com   <none>           <none>
[[email protected] ~]# ping 172.7.22.3
PING 172.7.22.3 (172.7.22.3) 56(84) bytes of data.
^C
--- 172.7.22.3 ping statistics ---
8 packets transmitted, 0 received, 100% packet loss, time 6999ms

二、flannel安装

#此操作分别需要在test-nodes1与test-nodes2上操作
[[email protected] ~]#  cd /opt/src/
[[email protected] src]# wget https://github.com/coreos/flannel/releases/download/v0.11.0/flannel-v0.11.0-linux-amd64.tar.gz
[[email protected] src]# mkdir /opt/flannel-v0.11.0
[[email protected] src]# tar xf flannel-v0.11.0-linux-amd64.tar.gz -C /opt/flannel-v0.11.0/
[[email protected] src]# ln -s /opt/flannel-v0.11.0/ /opt/flannel
[[email protected] src]# cd /opt/flannel
[[email protected] flannel]# mkdir cert
[[email protected] flannel]# cd cert/
[[email protected] cert]# scp test-operator:/opt/certs/ca.pem .
[email protected]‘s password:
ca.pem                                                                                                                      100% 1346   173.2KB/s   00:00
[[email protected] cert]# scp test-operator:/opt/certs/client.pem .
[email protected]‘s password:
client.pem                                                                                                                  100% 1363   207.0KB/s   00:00
[[email protected] cert]# scp test-operator:/opt/certs/client-key.pem .
[email protected]‘s password:
client-key.pem
[[email protected] cert]# cd ..
flannel]# vi subnet.env
FLANNEL_NETWORK=172.7.0.0/16
FLANNEL_SUBNET=172.7.21.1/24         #每个nodes的子网不一样需修改,test-nodes1为21,而test-nodes2为22
FLANNEL_MTU=1500
FLANNEL_IPMASQ=false

flannel]# vi flanneld.sh
#!/bin/sh
./flanneld   --public-ip=10.3.153.221 \               #另外一台test-nodes2需要修改
  --etcd-endpoints=https://10.3.153.212:2379,https://10.3.153.221:2379,https://10.3.153.222:2379   --etcd-keyfile=./cert/client-key.pem   --etcd-certfile=./cert/client.pem   --etcd-cafile=./cert/ca.pem   --iface=ens33   --subnet-file=./subnet.env   --healthz-port=2401

[[email protected] flannel]# cd /opt/etcd
# 下面这一步在一步机器上执行即可,只需执行一次
[[email protected] 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"}}

[[email protected] etcd]# 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)

[[email protected] etcd]# supervisorctl update
flanneld-7-21: added process group
[[email protected] flannel]# supervisorctl status
etcd-server-7-21                 RUNNING   pid 14828, uptime 2 days, 14:55:02
flanneld-7-21                    RUNNING   pid 26991, uptime 0:00:48
kube-apiserver-7-21              RUNNING   pid 14810, uptime 2 days, 14:56:17
kube-controller-manager-7-21     RUNNING   pid 14868, uptime 2 days, 14:46:46
kube-kubelet-7-21                RUNNING   pid 15095, uptime 2 days, 13:46:15
kube-proxy-7-21                  RUNNING   pid 22013, uptime 2 days, 13:05:18
kube-scheduler-7-21              RUNNING   pid 25120, uptime 2 days, 12:53:29

三、flannel 工作原理

1、host-gw模型,两台运算节点在同一个网段,当flannel启动时会为两台运算节点增加相应的路由表,此时两台运算节点的POD就能互相通信,而flannel退出也不会影响,因为路由表已添加到宿主机。

2、VxLAN模型,两台运算节点在不同的网段

原文地址:https://blog.51cto.com/12965094/2469072

时间: 2024-10-01 00:33:59

K8S 之 Flannel网络插件安装的相关文章

k8s的flannel网络插件配置

flannel的网络插件配置 Kubernetes网络通信需要解决以下问题:            (1)容器间通信:同一个Pod内的多个容器间的通信,lo            (2)Pod通信:Pod IP  <-直达->  Pod IP            (3)Pod与Service通信:Pod IP  <-->  Cluster IP            (4)Service与集群外部客户端的通信:(ingress.nodeport.loadbalancer)   k

kubernetes使用flannel网络插件服务状态显示CrashLoopBackOff

使用Kubeadm安装K8s集群,在安装flannel网络插件后,发现pod: kube-flannel-ds 一直是CrashLoopBackOff 报错内容如下: log is DEPRECATED and will be removed in a future version. Use logs instead. I0823 03:28:21.342352 1 main.go:514] Determining IP address of default interface I0823 03

kubernetes之Flannel网络插件部署

Kubernetes系统上Pod网络的实现依赖于第三方插件,而Flannel是由CoreOS主推的目前比较主流的容器网络解决方案,CNI插件有两种功能:网络配置和网络策略,由于flannel比较简单,并不支持网络策略,flannel项目自身只是一个框架,真正提供网络功能的是它的后端实现,目前,Flannel支持三种不同后端实现,分别是: UDP VXLAN host-gw UDP是Flannel项目最早支持的一种方式,是性能最差的方式,目前已被废弃. 用的最多的是VXLAN和host-gw模式的

k8s部署flannel网络

1 yum安装flannel包: yum install flannel -y 2 编辑配置文件 vim /etc/sysconfig/flanneld FLANNEL_ETCD_ENDPOINTS="http://192.168.233.130:2379" FLANNEL_ETCD_PREFIX="/coreos.com/network" #FLANNEL_OPTIONS="" 3 flannel网络依赖etcd存储,启动flanneld服务前

flannel网络插件介绍

插件介绍 flannel项目本身只是一个框架 真正为用户提供容器网络功能的是后端实现 目前支持三种方式 1.VXLAN 2.host-gw 3.UDP flannel会在宿主机上创建一个flannel0设备和创建一系列的路由表规则 flannel0设备介绍 负责在操作系统内核和用户应用程序之间传递IP包   1.内核态向用户态流动      当操作系统将一个IP包发送给flannel0设备后,flannel0设备就会把这个IP包交给      创建这个设备的应用程序也就是flanneld进程 

k8s网络之Flannel网络

k8s网络主题系列: 一.k8s网络之设计与实现 二.k8s网络之Flannel网络 三.k8s网络之Calico网络 简介 Flannel是CoreOS团队针对Kubernetes设计的一个网络规划服务,简单来说,它的功能是让集群中的不同节点主机创建的Docker容器都具有全集群唯一的虚拟IP地址. 在默认的Docker配置中,每个节点上的Docker服务会分别负责所在节点容器的IP分配.这样导致的一个问题是,不同节点上容器可能获得相同的内外IP地址.并使这些容器之间能够之间通过IP地址相互找

Kubernetes Flannel网络部署

之前的博客已经介绍了部署一个简单的Kubernetes集群,但是这个集群环境没有一个合理的网络配置.在实际生产中要实现集群中各个组件的通信,就需要使用第三方提供的网络插件. Flannel 二进制安装 1.下载fannel组件 wget https://github.com/coreos/flannel/releases/download/v0.10.0/flannel-v0.10.0-linux-amd64.tar.gz 2.安装Flannel 网络组件 tar xf flannel-v0.1

Flannel网络部署

一.Flannel网络部署 为Flannel生成证书 [[email protected] ssl]# vim flanneld-csr.json { "CN": "flanneld", "hosts": [], "key": { "algo": "rsa", "size": 2048 }, "names": [ { "C":

浅谈K8S cni和网络方案

此文已由作者黄扬授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 在早先的k8s版本中,kubelet代码里提供了networkPlugin,networkPlugin是一组接口,实现了pod的网络配置.解除.获取,当时kubelet的代码中有个一个docker_manager,负责容器的创建和销毁,亦会负责容器网络的操作.而如今我们可以看到基本上kubelet的启动参数中,networkPlugin的值都会设置为cni. cni插件的使用方式 使用CNI插件时,需要做三