文章转载自: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中

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

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

查看etcd中存储配置

  1. #!/bin/bash
  2. source /data/k8s/bin/env.sh
  3. etcdctl \
  4. --endpoints=${ETCD_ENDPOINTS} \
  5. --ca-file=/etc/kubernetes/cert/ca.pem \
  6. --cert-file=/etc/flanneld/cert/flanneld.pem \
  7. --key-file=/etc/flanneld/cert/flanneld-key.pem \
  8. get ${FLANNEL_ETCD_PREFIX}/config
  9. 结果如下:
  10. {"Network":"172.19.0.0/16", "SubnetLen": 21, "Backend": {"Type": "vxlan", "DirectRouting": true}}

创建Flanneld启动文件并分发

  1. #!/bin/bash
  2. cd /data/k8s/work
  3. source /data/k8s/bin/env.sh
  4. cat > flanneld.service << EOF
  5. [Unit]
  6. Description=Flanneld overlay address etcd agent
  7. After=network.target
  8. After=network-online.target
  9. Wants=network-online.target
  10. After=etcd.service
  11. Before=docker.service
  12. [Service]
  13. Type=notify
  14. ExecStart=/data/k8s/bin/flanneld \\
  15. -etcd-cafile=/etc/kubernetes/cert/ca.pem \\
  16. -etcd-certfile=/etc/flanneld/cert/flanneld.pem \\
  17. -etcd-keyfile=/etc/flanneld/cert/flanneld-key.pem \\
  18. -etcd-endpoints=${ETCD_ENDPOINTS} \\
  19. -etcd-prefix=${FLANNEL_ETCD_PREFIX} \\
  20. -iface=${IFACE} \\
  21. -ip-masq
  22. ExecStartPost=/data/k8s/bin/mk-docker-opts.sh -k DOCKER_NETWORK_OPTIONS -d /run/flannel/docker
  23. Restart=always
  24. RestartSec=5
  25. StartLimitInterval=0
  26. [Install]
  27. WantedBy=multi-user.target
  28. RequiredBy=docker.service
  29. EOF
  30. for node_ip in ${NODE_IPS[@]}
  31. do
  32. echo ">>> ${node_ip}"
  33. scp flannel

配置详解

启动flannel

  1. #!/bin/bash
  2. cd /data/k8s/work
  3. source /data/k8s/bin/env.sh
  4. for node_ip in ${NODE_IPS[@]}
  5. do
  6. echo ">>> ${node_ip}"
  7. ssh root@${node_ip} "systemctl daemon-reload && systemctl enable flanneld && systemctl restart flanneld"
  8. done

验证

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

查看已分配的网段信息

  1. #!/bin/bash
  2. source /data/k8s/bin/env.sh
  3. etcdctl \
  4. --endpoints=${ETCD_ENDPOINTS} \
  5. --ca-file=/etc/kubernetes/cert/ca.pem \
  6. --cert-file=/etc/flanneld/cert/flanneld.pem \
  7. --key-file=/etc/flanneld/cert/flanneld-key.pem \
  8. ls ${FLANNEL_ETCD_PREFIX}/subnets
  9. 结果如下:
  10. /kubernetes/network/subnets/172.19.120.0-21
  11. /kubernetes/network/subnets/172.19.184.0-21
  12. /kubernetes/network/subnets/172.19.72.0-21
  13. /kubernetes/network/subnets/172.19.56.0-21

查看下分配网段的详情:

  1. #!/bin/bash
  2. source /data/k8s/bin/env.sh
  3. etcdctl \
  4. --endpoints=${ETCD_ENDPOINTS} \
  5. --ca-file=/etc/kubernetes/cert/ca.pem \
  6. --cert-file=/etc/flanneld/cert/flanneld.pem \
  7. --key-file=/etc/flanneld/cert/flanneld-key.pem \
  8. get ${FLANNEL_ETCD_PREFIX}/subnets/172.19.120.0-21
  9. 结果如下:
  10. {"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. Deep Learning-深度学习(二)

    深度学习入门 1.随机梯度下降 在之前的学习过程当中,对于损失函数的最为重要的参数的梯度的更新是基于数据集中的所有数据,每一个数据都会进行到计算过程当中去,在本案例中,因为波士顿房价预测这个案例所涉及 ...

  2. cenos 7 zookeeper Error contacting service. It is probably not running

    zkServer.sh status 命令查看zookeeper集群的状态,发现异常 Error contacting service. It is probably not running 最开始以 ...

  3. Vue生命周期和MVVM框架

    生命周期 组件从开始到结束的全过程 创建阶段:beforeCreate.created 挂载阶段:beforeMount.mounted 更新阶段:beforeUpdate.updated 销毁阶段: ...

  4. Taro框架完美使用Axios

    前言 众所周知,在H5前端开发中,axioshttp库几乎是必选.大部分人都对它的使用非常熟悉.然而在小程序开发中,axios怎么没法用,需要使用对应平台提供的http接口,如微信小程序的wx.req ...

  5. .net6与英雄联盟邂逅之——根据官方LCU API制作游戏助手

    看了网上很多自己开发的英雄联盟的小助手工具,当时苦于没有api,自己也想做一个.后来发现了其实拳头本身就提供了LCU API在客户端运行的时候会暴露出来. 现在我们就来了解下工具的实现. 查询数据:h ...

  6. zabbix 6.2.0部署

    zabbix 6.2官方部署文档 https://www.zabbix.com/documentation/6.2/en/manual/installation/install下载zabbix6.2安 ...

  7. Border Theory

    持续更新中!!!更个屁,无线停更! 前言: KMP 学傻了,看 skyh 说啥 border 树,跑来学 border 理论 洛谷云剪切板:https://www.luogu.com.cn/paste ...

  8. python--函数参数传递

    1. 调用函数时,实参会传递给形参,叫做参数传递. 2. 根据实际参数的类型不同,函数参数的传递方式可分为 2 种,分别为值传递和引用(地址)传递: 值传递:传递的实参类型为不可变类型(字符串.数字. ...

  9. 如何仿造websocket请求?

    之前两次singnalr. websocket实时推送相关: .NET WebSockets 核心原理初体验 SignalR 从开发到生产部署避坑指南 tag: 浏览器--->nginx--&g ...

  10. HttpServletRequest 类

    目录 HttpServletRequest类有什么作用 HttpServletRequest 类的常用方法 如何获取请求参数 doGet 请求的中文乱码解决: POST 请求的中文乱码解决 请求的转发 ...