一介绍

flannel是CoreOS提供用于解决Dokcer集群跨主机通讯的覆盖网络工具。它的主要思路是:预先留出一个网段,每个主机使用其中一部分,然后每个容器被分配不同的ip;
让所有的容器认为大家在同一个直连的网络,底层通过UDP/VxLAN等进行报文的封装和转发。
flannel是Overlay网络的一种,也是将源数据包封装在另一种网络包里面进行路由转发和通信,目前已经支持UDP,VXLAN,host-gw,AWS,VPC,GCE路由等级传输,推荐 vxlan或者host-gw

二搭建(这里以两台为例)

2.1 分配网段,封装类型为vxlan,高效,稳定(master上执行)

etcdctl --ca-file=/etc/etcd/ssl/etcd-root-ca.pem --cert-file=/etc/etcd/ssl/etcd.pem --key-file=/etc/etcd/ssl/etcd-key.pem   \
--endpoints=https://192.168.137.66:2379,https://192.168.137.16:2379 set /coreos.com/network/config '{ "Network": "172.17.0.0/16", "Backend": {"Type": "vxlan"}}

查看分配的结果:

[root@k8s-master ~]# etcdctl --ca-file=/etc/etcd/ssl/etcd-root-ca.pem --cert-file=/etc/etcd/ssl/etcd.pem --key-file=/etc/etcd/ssl/etcd-key.pem  \
--endpoints=https://192.168.137.66:2379,https://192.168.137.16:2379 get /coreos.com/network/config '{ "Network": "172.17.0.0/16", "Backend": {"Type": "vxlan"}}'
{ "Network": "172.17.0.0/16", "Backend": {"Type": "vxlan"}}

2.2 下载并安装(master上执行)

mkdir  /home/softs
cd /home/softs
wget https://github.com/coreos/flannel/releases/download/v0.11.0/flannel-v0.11.0-linux-amd64.tar.gz
tar xf flannel-v0.11.0-linux-amd64.tar.gz
mv flanneld mk-docker-opts.sh /opt/kubernetes/bin/
[root@k8s-master softs]# cat flanneld.sh    #这里我们继续使用上一篇中安装etcd时生成的pem证书
#!/bin/bash ETCD_ENDPOINTS=${1:-"http://127.0.0.1:2379"}
cat <<EOF >/opt/kubernetes/cfg/flanneld
FLANNEL_OPTIONS="--etcd-endpoints=${ETCD_ENDPOINTS} \
-etcd-cafile=/etc/etcd/ssl/etcd-root-ca.pem \
-etcd-certfile=/etc/etcd/ssl/etcd.pem \
-etcd-keyfile=/etc/etcd/ssl/etcd-key.pem"
EOF cat <<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.target
EOF cat <<EOF >/usr/lib/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
EnvironmentFile=/run/flannel/subnet.env
ExecStart=/usr/bin/dockerd \$DOCKER_NETWORK_OPTIONS
ExecReload=/bin/kill -s HUP \$MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
EOF systemctl daemon-reload
systemctl enable flanneld
systemctl restart flanneld
systemctl restart docker
sh -x flanneld.sh https://192.168.137.66:2379,https://192.168.137.16:2379

分发到节点上执行(master 上执行)

cd /home/softs
scp flanneld.sh root@k8s-node1:/home/softs/
cd /opt/kubernetes/bin/ 
scp flanneld mk-docker-opts.sh root@master-node1:/opt/kubernetes/bin/

节点上执行(各节点执行)

sh -x flanneld.sh https://192.168.137.66:2379,https://192.168.137.16:2379

2.3 查看flannel状态(都可查看)

[root@k8s-master softs]# etcdctl --ca-file=/etc/etcd/ssl/etcd-root-ca.pem --cert-file=/etc/etcd/ssl/etcd.pem --key-file=/etc/etcd/ssl/etcd-key.pem \
--endpoints="https://192.168.137.66:2379,https://192.168.137.16:2379" ls /coreos.com/network/subnets
/coreos.com/network/subnets/172.17.90.0-24
/coreos.com/network/subnets/172.17.84.0-24
[root@k8s-master softs]# etcdctl --ca-file=/etc/etcd/ssl/etcd-root-ca.pem --cert-file=/etc/etcd/ssl/etcd.pem --key-file=/etc/etcd/ssl/etcd-key.pem \
--endpoints="https://192.168.137.66:2379,https://192.168.137.16:2379" get /coreos.com/network/subnets/172.17.84.0-24 docker
{"PublicIP":"192.168.137.16","BackendType":"vxlan","BackendData":{"VtepMAC":"76:ec:3f:7c:1b:81"}}
[root@k8s-master softs]# etcdctl --ca-file=/etc/etcd/ssl/etcd-root-ca.pem --cert-file=/etc/etcd/ssl/etcd.pem --key-file=/etc/etcd/ssl/etcd-key.pem \ 
--endpoints="https://192.168.137.66:2379,https://192.168.137.16:2379" get /coreos.com/network/subnets/172.17.90.0-24 docker
{"PublicIP":"192.168.137.66","BackendType":"vxlan","BackendData":{"VtepMAC":"9e:51:aa:45:24:7f"}}

查看路由情况

#master
[root@k8s-master bin]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.137.1 0.0.0.0 UG 100 0 0 ens33
172.17.84.0 172.17.84.0 255.255.255.0 UG 0 0 0 flannel.1
172.17.90.0 0.0.0.0 255.255.255.0 U 0 0 0 docker0
192.168.137.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
#node
[root@k8s-node1 softs]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.137.1 0.0.0.0 UG 100 0 0 ens33
172.17.84.0 0.0.0.0 255.255.255.0 U 0 0 0 docker0
172.17.90.0 172.17.90.0 255.255.255.0 UG 0 0 0 flannel.1
192.168.137.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33

k8s集群的搭建之三:flannel的更多相关文章

  1. 入门-k8s集群环境搭建(二)

    对于 Kubernetes 初学者,在搭建K8S集群时,推荐在阿里云或腾讯云采购如下配置:(您也可以使用自己的虚拟机.私有云等您最容易获得的 Linux 环境) 至少2台 2核4G 的服务器 Cent ...

  2. [k8s]elk架构设计-k8s集群里搭建

    elasticsearch和mysql的对比 https://blog.csdn.net/qq_21383435/article/details/79323383 Mapping ~ Schema m ...

  3. 基于 kubeadm 搭建高可用的kubernetes 1.18.2 (k8s)集群二 搭建高可用集群

    1. 部署keepalived - apiserver高可用(任选两个master节点) 1.1 安装keepalived # 在两个主节点上安装keepalived(一主一备) $ yum inst ...

  4. (转)k8s集群部署二:flannel网络

    转:https://blog.csdn.net/sinat_35930259/article/details/79946146 Overlay Network模式 覆盖网络,在基础网络上叠加的一种虚拟 ...

  5. k8s集群搭建 2019

    参考,https://github.com/qxl1231/2019-k8s-centos 事实上k8s集群的搭建很简单,笔者在搭建的过程中遇到的主要问题是镜像无法下载的问题. 如果发现教程中提供的镜 ...

  6. 搭建K8S集群

    一.前言 我们将现有的虚拟机称之为Node1,用作主节点.为了减少工作量,在Node1安装Kubernetes后,我们利用VirtualBox的虚拟机复制功能,复制出两个完全一样的虚拟机作为工作节点. ...

  7. 高可用的K8S集群部署方案

    涉及到的内容 LVS HAProxy Harbor etcd Kubernetes (Master Worker) 整体拓补图 以上是最小生产可用的整体拓补图(相关节点根据需要进行增加,但不能减少) ...

  8. kubeadm 搭建 K8S集群

    kubeadm是K8s官方推荐的快速搭建K8s集群的方法. 环境: Ubuntu 16.04 1 安装docker Install Docker from Ubuntu’s repositories: ...

  9. k8s集群搭建(一)

    k8s简介 kubernetes,简称K8s,是用8代替8个字符“ubernete”而成的缩写.是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简 ...

随机推荐

  1. case when使用的总结

    https://blog.csdn.net/changxiangyangy/article/details/86718551 前几天,为了给产品分析当前用户数据结构,写sql的时候使用到了case w ...

  2. PCA revisit

    都知道PCA可以做降维,那它为什么可以降维,究竟是怎么降维的呢? 1. 为什么我们要降维? 我们的样本数据好好的,为什么要去做降维,第一个要想清楚这个问题. 也许你是要训练一个分类器,觉得当前特征维度 ...

  3. pycharm查找替换快捷键

    查找:CTRL + F 替换:CTRL + R 如果想删除,替换那一栏不填就可以了

  4. Python 序列类型拆包 %s 和'{}'.format 的功能差异之一

    >>> 1, 2, 3 #这样写成一行相当于一个元组(1, 2, 3)>>> x = 1, 2, 3>>> x(1, 2, 3)>>& ...

  5. RGBA的值0-255范围如何转换成0-1范围

    这样一个rgba(1,0,0,1) 如果我们要把它转换成 0-255范围 就是rgb分别乘以255 就是 rgba(255,0,0,1) 0-255转0-1范围 如 rgba(34,56,56,1)转 ...

  6. Jpa动态多表if多条件联合查询,并对查询结果进行分页

    public Page<Map<String, Object>> resourceList(TeachingInfo teachingInfo, Pageable pageab ...

  7. string.format()详解

    java中: 从 Java 5.0 开始,String 类新增了一个强大的字符串格式化方法 format().这个方法到现在用的人还是不多,实在是一种浪费.本文带你快速过一遍这个方法的功能,将来你要用 ...

  8. 【leetcode】980. Unique Paths III

    题目如下: On a 2-dimensional grid, there are 4 types of squares: 1 represents the starting square.  Ther ...

  9. Selenium之WebDriverWait

    转自https://blog.csdn.net/duzilonglove/article/details/78455051 Selenium之WebDriverWait用法

  10. 【纪中集训】2019.08.10【NOIP提高组】模拟 A 组TJ

    T1 Description Solution 有待填坑-- T2 Description 给定一个\(h(≤10)\)层.\(n(≤10)\)行.\(m(≤10)\)列的由泥土组成的立方体,挖开\( ...