文章转载自:https://mp.weixin.qq.com/s?__biz=MzI1MDgwNzQ1MQ==&mid=2247483834&idx=1&sn=b04ec193f8832666a8a570da1ca552da&chksm=e9fdd44ede8a5d58136c95999a11005268ef7af89fc4397e43a6af140feb826ba3e4693b4e54&cur_album_id=1341273083637989377&scene=189#wechat_redirect

kubernetes需要使用第三方的网络插件来实现kubernetes的网络功能,这样一来,安装网络插件成为必要前提;第三方网络插件有多种,常用的有flanneld、calico和cannel(flanneld+calico),不同的网络组件,都提供基本的网络功能,为各个Node节点提供IP网络等。

二进制下载链接https://github.com/coreos/flannel/releases/download/v0.11.0/flannel-v0.11.0-linux-amd64.tar.gz,下载完成后,分发到所有节点的/data/k8s/bin/目录下。

Flannel插件支持三种通信模式如下

Flanneld配置写到Etcd中

cd /data/k8s/work
source /data/k8s/bin/env.sh
etcdctl \
--endpoints=${ETCD_ENDPOINTS} \
--ca-file=/data/k8s/work/ca.pem \
--cert-file=/data/k8s/work/flanneld.pem \
--key-file=/data/k8s/work/flanneld-key.pem \
mk ${FLANNEL_ETCD_PREFIX}/config '{"Network":"'${CLUSTER_CIDR}'", "SubnetLen": 21, "Backend": {"Type": "vxlan", "DirectRouting": true}}'

这里我们使用VxLan+DirectRouting的模式进行通信,Node节点网段相同,直接路由,节点网段不同,使用Vxlan进行封装;

查看etcd中存储配置

#!/bin/bash

source /data/k8s/bin/env.sh

etcdctl \
--endpoints=${ETCD_ENDPOINTS} \
--ca-file=/etc/kubernetes/cert/ca.pem \
--cert-file=/etc/flanneld/cert/flanneld.pem \
--key-file=/etc/flanneld/cert/flanneld-key.pem \
get ${FLANNEL_ETCD_PREFIX}/config 结果如下:
{"Network":"172.19.0.0/16", "SubnetLen": 21, "Backend": {"Type": "vxlan", "DirectRouting": true}}

创建Flanneld启动文件并分发

#!/bin/bash

cd /data/k8s/work
source /data/k8s/bin/env.sh cat > flanneld.service << EOF
[Unit]
Description=Flanneld overlay address etcd agent
After=network.target
After=network-online.target
Wants=network-online.target
After=etcd.service
Before=docker.service
[Service]
Type=notify
ExecStart=/data/k8s/bin/flanneld \\
-etcd-cafile=/etc/kubernetes/cert/ca.pem \\
-etcd-certfile=/etc/flanneld/cert/flanneld.pem \\
-etcd-keyfile=/etc/flanneld/cert/flanneld-key.pem \\
-etcd-endpoints=${ETCD_ENDPOINTS} \\
-etcd-prefix=${FLANNEL_ETCD_PREFIX} \\
-iface=${IFACE} \\
-ip-masq
ExecStartPost=/data/k8s/bin/mk-docker-opts.sh -k DOCKER_NETWORK_OPTIONS -d /run/flannel/docker
Restart=always
RestartSec=5
StartLimitInterval=0
[Install]
WantedBy=multi-user.target
RequiredBy=docker.service
EOF for node_ip in ${NODE_IPS[@]}
do
echo ">>> ${node_ip}"
scp flannel

配置详解

启动flannel

#!/bin/bash

cd /data/k8s/work
source /data/k8s/bin/env.sh for node_ip in ${NODE_IPS[@]}
do
echo ">>> ${node_ip}"
ssh root@${node_ip} "systemctl daemon-reload && systemctl enable flanneld && systemctl restart flanneld"
done

验证

#!/bin/bash
source /data/k8s/bin/env.sh
for node_ip in ${NODE_IPS[@]}
do
echo ">>> ${node_ip}"
ssh root@${node_ip} "systemctl status flanneld|grep -i Active"
done 验证结果 >>> 192.168.16.104
Active: active (running) since Sun 2019-12-29 18:03:43 CST; 1 months 0 days ago
>>> 192.168.16.105
Active: active (running) since Sat 2019-12-28 22:33:27 CST; 1 months 1 days ago
>>> 192.168.16.106
Active: active (running) since Sat 2019-12-28 22:33:27 CST; 1 months 1 days ago
>>> 192.168.16.107
Active: active (running) since Sat 2019-12-28 22:33:28 CST; 1 months 1 days ago

查看已分配的网段信息

#!/bin/bash

source /data/k8s/bin/env.sh

etcdctl \
--endpoints=${ETCD_ENDPOINTS} \
--ca-file=/etc/kubernetes/cert/ca.pem \
--cert-file=/etc/flanneld/cert/flanneld.pem \
--key-file=/etc/flanneld/cert/flanneld-key.pem \
ls ${FLANNEL_ETCD_PREFIX}/subnets 结果如下:
/kubernetes/network/subnets/172.19.120.0-21
/kubernetes/network/subnets/172.19.184.0-21
/kubernetes/network/subnets/172.19.72.0-21
/kubernetes/network/subnets/172.19.56.0-21

查看下分配网段的详情:

#!/bin/bash

source /data/k8s/bin/env.sh

etcdctl \
--endpoints=${ETCD_ENDPOINTS} \
--ca-file=/etc/kubernetes/cert/ca.pem \
--cert-file=/etc/flanneld/cert/flanneld.pem \
--key-file=/etc/flanneld/cert/flanneld-key.pem \
get ${FLANNEL_ETCD_PREFIX}/subnets/172.19.120.0-21 结果如下:
{"PublicIP":"192.168.16.104","BackendType":"vxlan","BackendData":{"VtepMAC":"aa:ea:b2:e1:88:a5"}}

总结

网络插件有多种,根据公司或个人实际情况进行选择,网上很多前辈说flannel支持的网络规模受限,建议使用calico,由于测试环境规模不大,这里使用flannel即可满足。

11. 第十篇 网络组件flanneld安装及使用的更多相关文章

  1. Python之路(第三十篇) 网络编程:socket、tcp/ip协议

    一.客户端/服务器架构 1.硬件C/S架构(打印机) 打印机作为一个服务端,电脑连接打印机进行打印 2.软件C/S架构 互联网中处处是C/S架构 如谷歌网站是服务端,你的浏览器是客户端(B/S架构也是 ...

  2. Egret入门学习日记 --- 第二十篇(书中 9.1~9.3 节 内容 组件篇)

    第二十篇(书中 9.1~9.3 节 内容 组件篇) 第八章中的内容. 以上都是基本的Js知识,我就不录入了. 直接来看 第9章. 开始 9.1节. 以上内容告诉你,Egret官方舍弃了GUI,使用了E ...

  3. Spring Cloud第十篇 | 分布式配置中心Config

    ​ 本文是Spring Cloud专栏的第十篇文章,了解前九篇文章内容有助于更好的理解本文: Spring Cloud第一篇 | Spring Cloud前言及其常用组件介绍概览 Spring Clo ...

  4. Python开发【第二十篇】:缓存

    Python开发[第二十篇]:缓存redis&Memcache   点击这里 Python之路[第九篇]:Python操作 RabbitMQ.Redis.Memcache.SQLAlchemy ...

  5. VMware vSphere 服务器虚拟化之十八桌面虚拟化之安装View Composer服务器

                        VMware vSphere 服务器虚拟化之十八桌面虚拟化之安装View Composer服务器      View Compose服务可安装在管理虚拟机的vC ...

  6. 【阿里聚安全·安全周刊】阿里双11技术十二讲直播预约|AWS S3配置错误曝光NSA陆军机密文件

    关键词:阿里双11技术十二讲直播丨雪人计划丨亚马逊AWS S3配置错误丨2018威胁预测丨MacOS漏洞丨智能风控平台MTEE3丨黑客窃取<权利的游戏>剧本|Android 8.1   本 ...

  7. Kubernetes实战(一):k8s v1.11.x v1.12.x 高可用安装

    说明:部署的过程中请保证每个命令都有在相应的节点执行,并且执行成功,此文档已经帮助几十人(仅包含和我取得联系的)快速部署k8s高可用集群,文档不足之处也已更改,在部署过程中遇到问题请先检查是否遗忘某个 ...

  8. 第十篇 Replication:故障排除

    本篇文章是SQL Server Replication系列的第十篇,详细内容请参考原文. 复制故障排除是一项艰巨的任务.在任何复制设置中,都涉及到很多移动部件,而可用的工具并不总是很容易识别问题.Th ...

  9. 对比iOS网络组件:AFNetworking VS ASIHTTPRequest

    对比iOS网络组件:AFNetworking VS ASIHTTPRequest 作者 高嘉峻 发布于 2013年2月28日 | 7 讨论 分享到:微博微信FacebookTwitter有道云笔记邮件 ...

随机推荐

  1. 初始化二维列表时使用[ [0]* N ] * K会出现的问题

    声明二维列表使用[ [0]* N ] * K会出现的问题 初始化二维列表时使用[ [0]* N ] * K创建,外层列表的每一个元素地址相同: 创造了一个二维列表: 修改其中的一个元素a[1][1], ...

  2. java枚举和注解

    枚举 一.枚举(enumeration) 是一组常量的集合,可以理解为:枚举属于一种特殊的类,里面只包含一组有限的特定的对象,构造方法默认为private. 二.枚举的两种实现方式 1.自定义实现枚举 ...

  3. static 和 final(java)

    static: 1.1static修饰成员变量: 使用static修饰的成员变量不在对象的数据结构,而是类的基本信息(参数) 使用static修饰的成员可以直接使用,类名.成员的方式访问,而不需要再n ...

  4. Aborted wiping of zfs_member.1 existing signature left on the device.Aborting pvcreate on /dev/sda

    看意思是有什么签名在上面,创建不了逻辑卷,确认数据备份的情况下执行对应的下面命令: wipefs --all --force /dev/sdax

  5. letsencrypt更换pip源

    vim letsencrypt-auto 将DEFAULT_INDEX_BASE = 'https://pypi.python.org'改为DEFAULT_INDEX_BASE = 'http://m ...

  6. 建立二叉树的二叉链表存储结构(严6.70)--------西工大noj

    #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct TreeNode ...

  7. BufferedInputStream字节缓冲输入流

    package com.yang.Test.BufferedStudy; import java.io.BufferedInputStream; import java.io.FileInputStr ...

  8. flex 我所理解不够深刻的内容

    1.align-items属性   父元素 align-items属性定义项目在交叉轴上如何对齐. flex-start:交叉轴的起点对齐. flex-end:交叉轴的终点对齐. center:交叉轴 ...

  9. YII学习总结2(命名空间和操作响应)

    YII基础准备1.命名空间<?php /****假设有三个同名的类,输出的值为A,B,C****/ use a\b\c\apple; use d\e\f\apple as bApple; use ...

  10. 【AGC】增长服务1-远程配置示例

    ​ [AGC]增长服务1-远程配置示例 前言:上一次笔者给大家带来了AGC领域的性能管理服务的学习.这次我们再继续深化学习AGC的相关知识.在文章开始之前,再给读者简单介绍一下AGC,以免第一次来的读 ...