当前位置: 首页 > news >正文

[云原生] 二进制安装K8S(中)部署网络插件和DNS

书接上文,我们继续部署剩余的插件

一、K8s的CNI网络插件模式

2.1 k8s的三种网络模式 

K8S 中 Pod 网络通信:
(1)Pod 内容器与容器之间的通信

在同一个 Pod 内的容器(Pod 内的容器是不会跨宿主机的)共享同一个网络命令空间,相当于它们在同一台机器上一样,可以用 localhost 地址访问彼此的端口。

(2)同一个 Node 内 Pod 之间的通信

每个 Pod 都有一个真实的全局 IP 地址,同一个 Node 内的不同 Pod 之间可以直接采用对方 Pod 的 IP 地址进行通信,Pod1 与 Pod2 都是通过 Veth 连接到同一个 docker0 网桥,网段相同,所以它们之间可以直接通信。

(3)不同 Node 上 Pod 之间的通信

Pod 地址与 docker0 在同一网段,docker0 网段与宿主机网卡是两个不同的网段,且不同 Node 之间的通信只能通过宿主机的物理网卡进行。

要想实现不同 Node 上 Pod 之间的通信,就必须想办法通过主机的物理网卡 IP 地址进行寻址和通信。因此要满足两个条件:Pod 的 IP 不能冲突;将 Pod 的 IP 和所在的 Node 的 IP 关联起来,通过这个关联让不同 Node 上 Pod 之间直接通过内网 IP 地址通信。

Overlay Network:

叠加网络,在二层或者三层基础网络上叠加的一种虚拟网络技术模式,该网络中的主机通过虚拟链路隧道连接起来(类似于VPN)。

VXLAN:

将源数据包封装到UDP中,并使用基础网络的IP/MAC作为外层报文头进行封装,然后在以太网上传输,到达目的地后由隧道端点解封装并将数据发送给目标地址。

2.2  Flannel 插件 

Flannel 的功能是让集群中的不同节点主机创建的 Docker 容器都具有全集群唯一的虚拟 IP 地址。

Flannel 是 Overlay 网络的一种,也是将 TCP 源数据包封装在另一种网络包里面进行路由转发和通信,目前支持 udp、vxlan、 host-GW 3种数据转发方式。

  • UDP(默认方式,基于应用转发,配置简单,性能最差)
  • VXLAN(基于内核转发)
  • Host-gw(性能最好、配置麻烦)
(1)Flannel UDP 模式(端口8285) 

udp模式的工作原理:(基于应用进行转发,Flannel提供路由表,Flannel封装、解封装)

数据从 node01 上 Pod 的源容器中发出后,经由所在主机的 docker0 虚拟网卡转发到 flannel0 虚拟网卡,flanneld 服务监听在 flannel0 虚拟网卡的另外一端。

Flannel 通过 Etcd 服务维护了一张节点间的路由表。源主机 node01 的 flanneld 服务将原本的数据内容封装到 UDP 中后根据自己的路由表通过物理网卡投递给目的节点 node02 的 flanneld 服务,数据到达以后被解包,然后直接进入目的节点的 flannel0 虚拟网卡,之后被转发到目的主机的 docker0 虚拟网卡,最后就像本机容器通信一样由 docker0 转发到目标容器。

ETCD 之 Flannel 提供说明:

  • 存储管理Flannel可分配的IP地址段资源
  • 监控 ETCD 中每个 Pod 的实际地址,并在内存中建立维护 Pod 节点路由表
(2) vxlan 模式(端口8472)

vxlan 是一种overlay(虚拟隧道通信)技术,通过三层网络搭建虚拟的二层网络,跟 udp 模式具体实现不太一样:

1)udp模式是在用户态实现的,数据会先经过tun网卡,到应用程序,应用程序再做隧道封装,再进一次内核协议栈,而vxlan是在内核当中实现的,只经过一次协议栈,在协议栈内就把vxlan包组装好。

2)udp模式的tun网卡是三层转发,使用tun是在物理网络之上构建三层网络,属于ip in udp,vxlan模式是二层实现, overlay是二层帧,属于mac in udp。

3)vxlan由于采用mac in udp的方式,所以实现起来会涉及mac地址学习,arp广播等二层知识,udp模式主要关注路由

Flannel VXLAN模式跨主机的工作原理:(Flannel提供路由表,由内核封装、解封装)

1、数据帧从主机A上Pod的源容器中发出后,经由所在主机的docker0/cni0 网络接口转发到flannel.1 接口

2、flannel.1 收到数据帧后添加VXLAN 头部,封装在UDP报文中

3、主机A通过物理网卡发送封包到主机B的物理网卡中

4、主机B的物理网卡再通过VXLAN 默认端口8472转发到flannel.1 接口进行解封装

(官方给出的预设接口为4789,而实际运用的其实为8472端口)

5、解封装以后,内核将数据帧发送到Cni0, 最后由Cni0 发送到桥接到此接口的容器B中。

 

(3) UDP和VXLAN的区别 

由于UDP模式是在用户态做转发(即基于应用进行转发,由应用程序进行封装和解封装),会多一次报文隧道封装,因此性能上会比在内核态做转发的VXLAN模式差。

UDP和VXLAN的区别:

  • UDP基于应用程序进行转发,由应用程序进行封装和解封装;VXLAN由内核进行封装和解封装,内核效率比应用程序要高,所以VXLAN比UDP要快。
  • UDP是数据包,VXLAN是数据帧。
  • UDP的网卡Flannel0,VXLAN的网卡Flannel.1。

(4)知识延申:vlan和vxlan的区别 

1)vxlan支持更多的二层网络

vlan使用12位bit表示vlan ID,因此最多支持2^12=4096个vlan(可用数量为4094)

vxlan使用的ID使用24位bit,最多可以支持2^24个

2)vxlan对已有的网络路径利用效率更高

vlan使用STP(spanning tree protocol)避免环路,会将一半的网络路径阻塞。

vxlan的数据包封装成UDP通过网络层传输,可以使用所有的网络路径。

3)vxlan可以防止物理交换机Mac表耗尽

vlan需要在交换机的Mac表中记录Mac物理地址。

vxlan采用隧道机制,Mac物理地址不需记录在交换机。

4)VXLAN在一定程度上可以实现逻辑网络拓扑和物理网络拓扑的解耦

VXLAN技术通过隧道技术在物理的三层网络中虚拟二层网络,处于VXL AN网络的终端无法察觉到VXL AN的通信过程,这样也就使得逻辑网络拓扑和物理网络拓扑实现了一定程度的解耦,网络拓扑的配置对于物理设备的配置的依赖程度有所降低,配置更灵活更方便。

5)VXLAN技术还具有多租户支持的特性

VLAN技术仅仅解决了二层网络广播域分割的问题,而VXL AN技术还具有多租户支持的特性,通过VXLAN分割,各个租户可以独立组网、通信,地址分配方面和多个租户之间地址冲突的问题也得到了解决。

三、部署网络组件

3.1 部署 flannel

//在node1节点上操作
#上传 cni-plugins-linux-amd64-v0.8.6.tgz 和 flannel.tar 到 /opt 目录中
cd /opt/
docker load -i flannel.tarmkdir /opt/cni/bin -p
tar zxvf cni-plugins-linux-amd64-v0.8.6.tgz -C /opt/cni/bin//在node2节点上操作
#上传 cni-plugins-linux-amd64-v0.8.6.tgz 和 flannel.tar 到 /opt 目录中
cd /opt/
docker load -i flannel.tarmkdir /opt/cni/bin -p
tar zxvf cni-plugins-linux-amd64-v0.8.6.tgz -C /opt/cni/bin//在 master01 节点上操作
#上传 kube-flannel.yml 文件到 /opt/k8s 目录中,部署 CNI 网络
cd /opt/k8s
kubectl apply -f kube-flannel.yml kubectl get pods -n kube-systemkubectl get nodes

​ 

 

 

 

 

 

3.2   部署 Calico  

 该网络插件和flannel插件  选择其一部署即可(由于yaml文件过于复杂,本次就不再展示)

//在 master01 节点上操作
#上传 calico.yaml 文件到 /opt/k8s 目录中,部署 CNI 网络
cd /opt/k8s
vim calico.yaml
#修改里面定义Pod网络(CALICO_IPV4POOL_CIDR),与前面kube-controller-manager配置文件指定的cluster-cidr网段一样- name: CALICO_IPV4POOL_CIDRvalue: "192.168.0.0/16"kubectl apply -f calico.yamlkubectl get pods -n kube-system
NAME                                       READY   STATUS    RESTARTS   AGE
calico-kube-controllers-659bd7879c-4h8vk   1/1     Running   0          58s
calico-node-nsm6b                          1/1     Running   0          58s
calico-node-tdt8v                          1/1     Running   0          58s#等 Calico Pod 都 Running,节点也会准备就绪
kubectl get nodes

四、部署 CoreDNS 

 CoreDNS:可以为集群中的 service 资源创建一个域名与 IP 的对应关系解析。

service发现是k8s中的一个重要机制,其基本功能为:在集群内通过服务名对服务进行访问,即需要完成从服务名到ClusterIP的解析。

k8s主要有两种service发现机制:环境变量和DNS。没有DNS服务的时候,k8s会采用环境变量的形式,但一旦有多个service,环境变量会变复杂,为解决该问题,我们使用DNS服务。

//在所有 node 节点上操作
#上传 coredns.tar 到 /opt 目录中
cd /opt
docker load -i coredns.tar

//在 master01 节点上操作
#上传 coredns.yaml 文件到 /opt/k8s 目录中,部署 CoreDNS 
cd /opt/k8s
kubectl apply -f coredns.yamlkubectl get pods -n kube-system #DNS 解析测试
kubectl run -it --rm dns-test --image=busybox:1.28.4 sh/ # nslookup kubernetes

 

相关文章:

[云原生] 二进制安装K8S(中)部署网络插件和DNS

书接上文,我们继续部署剩余的插件 一、K8s的CNI网络插件模式 2.1 k8s的三种网络模式 K8S 中 Pod 网络通信: (1)Pod 内容器与容器之间的通信 在同一个 Pod 内的容器(Pod 内的容器是不会跨宿主机的)共享…...

云端技术驾驭DAY13——Pod污点、容忍策略、Pod优先级与抢占、容器安全

往期回顾: 云端技术驾驭DAY01——云计算底层技术奥秘、云服务器磁盘技术、虚拟化管理、公有云概述 云端技术驾驭DAY02——华为云管理、云主机管理、跳板机配置、制作私有镜像模板 云端技术驾驭DAY03——云主机网站部署、web集群部署、Elasticsearch安装 云端技术驾驭…...

掌握Docker:让你的应用轻松部署和管理

文章目录 一、引言(为什么要学习docker?)1.1 环境不一致1.2 隔离性1.3 弹性伸缩1.4 学习成本 二、Docker介绍2.1 Docker的由来2.2 什么是Docker2.3 为什么要用Docker2.3.1 虚拟机2.3.2 Linux容器 2.4 Docker与传统虚拟机的区别2.5 Docker的思…...

5G-A,未来已来

目前,全国首个5G-A规模组网示范完成。这项由北京联通携手华为共同打造的示范项目,实现了北京市中心金融街、历史建筑长话大楼、大型综合性体育场北京工人体育场三个重点场景的连片覆盖。 实际路测结果显示,5G-A用户下行峰值速率达到10Gbps&am…...

智慧公厕让社区生活更美好

随着科技的迅猛发展,城市管理、城市服务均使用科技化的手段进行升级改造,社区生活更美好赋予全新的智慧效能,其中智慧公厕也成为了城市环卫设施的新宠。智慧公厕以物联网、互联网、大数据、云计算、5G通信、自动化控制等技术为核心&#xff0…...

Apache软件基金会的孵化标准和毕业标准

Apache软件基金会的孵化标准和毕业标准是一个项目成功的重要衡量指标。这些标准关注项目的多个方面,包括开放性、合作性、共建性、透明性、技术可行性、社区建设以及用户基础等。在孵化阶段,Apache软件基金会主要关注项目的开放性和合作性。首先&#xf…...

什么是高可用架构

一、什么是高可用 在运维中,经常听到高可用,那么什么是高可用架构呢?通俗点讲,高可用就是在服务故障,节点宕机的情况下,业务能够保证不中断,服务正常运行。 举个例子,支付宝&#…...

【Vuforia+Unity】AR04-地面、桌面平面识别功能(Ground Plane Target)

不论你是否曾有过相关经验,只要跟随本文的步骤,你就可以成功地创建你自己的AR应用。 官方教程Ground Plane in Unity | Vuforia Library 这个功能很棒,但是要求也很不友好,只能支持部分移动设备,具体清单如下: 01.Vuforia的地面识别功能仅支持的设备清单: Recommended…...

【Git】解决‘每次初始化一个新仓库时,都需要执行git config --global --add safe.directory命令‘

问题 这个命令是用来将一个安全目录添加到全局的 Git 配置中。但每次克隆一个仓库或者新建一个仓库,并且对该仓库进行操作时,都需要执行该命令,十分麻烦! 这是因为,Git 近期进行了版本升级,添加了新的目录…...

Qt的QThread、QRunnable和QThreadPool的使用

1.相关描述 随机生产1000个数字,然后进行冒泡排序与快速排序。随机生成类继承QThread类、冒泡排序使用moveToThread方法添加到一个线程中、快速排序类继承QRunnable类,添加到线程池中进行排序。 2.相关界面 3.相关代码 widget.cpp #include "widget…...

windows安装部署node.js并搭建Vue项目

一、官网下载安装包 官网地址:https://nodejs.org/zh-cn/download/ 二、安装程序 1、安装过程 如果有C/C编程的需求,勾选一下下图所示的部分,没有的话除了选择一下node.js安装路径,直接一路next 2、测试安装是否成功 【winR】…...

【计算机】本科考研还是就业?

其实现在很多计算机专业的学生考研,也是无奈的选择 技术发展日新月异,而在本科阶段,大家学着落后的技术,出来找工作自然会碰壁。而且现在用人单位的门槛越来越高,学历默认研究生起步,面试一般都是三轮起步…...

ChatGPT调教指南 | 咒语指南 | Prompts提示词教程(三)

在人工智能成为我们日常互动中无处不在的一部分的时代,与大型语言模型(llm)有效沟通的能力是无价的。“良好提示的26条原则”为优化与这些复杂系统的交互提供了全面的指导。本指南证明了人类和人工智能之间的微妙关系,强调清晰、专一和结构化的沟通方法。…...

小程序一键链接WIFI

1.小程序一键链接WIFI connectWifi: function() {var that this;//检测手机型号wx.getSystemInfo({success: function(res) {var system ;if (res.platform android) system parseInt(res.system.substr(8));if (res.platform ios) system parseInt(res.system.substr(4…...

结构体位域保存传感器数据

1、原理图分析: 8个74HC4052共用两个选通引脚,8个输入引脚,一共可以检测64个数字红外传感器。74HC4052的功能表如下,nY0表示所有Y0引脚。 S1 S0 Channel on 0 0 nY0 0 1 nY1 1 0 nY2 1 1 nY3 enum sensor_id{HS01 0, HS02, HS03, HS0…...

66-ES6:var,let,const,函数的声明方式,函数参数,剩余函数,延展操作符

1.JavaScript语言的执行流程 编译阶段:构建执行函数;执行阶段:代码依次执行 2.代码块:{ } 3.变量声明方式var 有声明提升,允许重复声明,声明函数级作用域 访问:声明后访问都是正常的&…...

prime_series_level-1靶场详解

环境搭建 官网https://www.vulnhub.com/entry/prime-1,358/ 直接导入靶机 解题思路 arp-scan -l 确认靶机ip为192.168.236.136 也可以使用nmap扫网段 nmap -sn 192.168.236.0/24 使用nmap扫描靶机开放的端口 nmap -sS -T5 --min-rate 10000 192.168.236.136 -sC -p- &#xf…...

LeetCode刷题笔记之二叉树(三)

一、寻找特定节点 1. 404【左叶子之和】 题目: 给定二叉树的根节点 root ,返回所有左叶子之和。代码: class Solution {public int sumOfLeftLeaves(TreeNode root) {//左叶子不止是最左边的叶子,而是二叉树中每个节点的左叶子…...

IBM在闪存系统集成实时恶意软件I/O检测功能

IBM在其最新一代FlashCore Modules(FCMs)固件中集成了使用机器学习进行实时勒索软件和其他攻击检测的功能。这些FCMs是专用于IBM FlashSystem 5000和Storwize阵列的闪存驱动器,采用U.2外形尺寸及NVMe接口。现有的第三代FCMs分别提供4.8、9.6、…...

bpmn-js中实现xml数据转为json数据

开发bpmn-js建模器,希望将bpmn数据格式转为json数据格式更加清晰的展示数据层次,以结果为导向分析需求,实现功能的思路有两种方式: 通过bpmn-js转化为JS数据对象,然后通过JS中提供的JSON模块转换为json数据将xml解析成dom对象,通过dom对象转化为json格式数据三方库这里主…...

APK Installer:Windows平台的Android应用生态扩展技术方案

APK Installer:Windows平台的Android应用生态扩展技术方案 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 在数字化工作流日益复杂的今天,操作系…...

Spring Cloud Gateway 踩坑实录:升级到2020+版本后,lb://服务名路由503?一个依赖搞定

Spring Cloud Gateway 2020版本升级指南:解决lb://服务名路由503问题 最近在将Spring Cloud项目从Hoxton升级到2020.0.x及以上版本时,不少开发者遇到了一个奇怪的问题:原本运行良好的Gateway路由配置突然失效,特别是使用lb://服务…...

【泛微E9开发】ESB中心:从零到一的异构系统集成实战

1. ESB中心入门:为什么需要异构系统集成? 第一次接触泛微E9的ESB中心时,我和大多数开发者一样充满疑惑:为什么OA系统需要集成其他业务系统?简单来说,企业日常运营中会产生大量数据流转需求。比如销售人员在…...

【GraalVM静态镜像内存优化终极指南】:20年JVM专家亲授5大内存泄漏陷阱与3步零GC启动法

第一章:GraalVM静态镜像内存优化全景认知GraalVM 静态原生镜像(Native Image)通过提前编译(AOT)将 Java 应用编译为独立可执行文件,显著降低启动延迟与运行时内存开销。然而,静态镜像的内存行为…...

FastLED终极指南:如何用Arduino创建惊艳的LED动画效果

FastLED终极指南:如何用Arduino创建惊艳的LED动画效果 【免费下载链接】FastLED The FastLED library for colored LED animation on Arduino. Please direct questions/requests for help to the FastLED Reddit community: http://fastled.io/r Wed like to use g…...

自动化测试工程师缺口扩大3倍:从业者的挑战、机遇与18个月黄金窗口期应对策略

行业结构性变革的十字路口当前,软件测试行业正处在一场深刻而剧烈的结构性变革之中。技术浪潮的迭代、业务模式的演进以及开发范式的迁移,共同推动着软件质量保障体系的全面重塑。一个不容忽视且日趋显著的信号是,市场对自动化测试工程师的需…...

TrafficMonitor插件大全:打造你的终极桌面监控中心

TrafficMonitor插件大全:打造你的终极桌面监控中心 【免费下载链接】TrafficMonitorPlugins 用于TrafficMonitor的插件 项目地址: https://gitcode.com/gh_mirrors/tr/TrafficMonitorPlugins 想在桌面上实时监控股票行情、硬件状态、天气信息却不想被复杂软件…...

【AI研究】准确率≠可靠性——普林斯顿团队提出4维度12指标框架,证明Agent能力飙升但可靠性原地踏步

📖 论文速读 | D1 — 2026-03-19 基本信息 论文: Towards a Science of AI Agent Reliability (arXiv 2602.16666) 作者: Stephan Rabanser, Sayash Kapoor, Peter Kirgis, Kangheng Liu, Saiteja Utpala, Arvind Narayanan (普林斯顿大学) 发布: 2026-02-18 仪表…...

【进阶篇】2.3 五分钟掌握Redis HyperLogLog 实战场景与性能调优

1. HyperLogLog 五分钟快速入门 第一次接触HyperLogLog时,我也被这个奇怪的名字吸引了注意力。这到底是什么神奇的数据结构?简单来说,它就是Redis提供的一个"计数器",但和我们熟悉的普通计数器完全不同。想象一下&#…...

从科幻小说到产品设计:如何用‘What-If’思维模型,提前5年预判技术趋势

科幻思维解码:用未来叙事重构产品创新逻辑 当科幻遇见产品:一场跨越时空的思维实验 1982年上映的《银翼杀手》描绘了2019年的洛杉矶街头全息广告与仿生人共存的世界,这个曾被视作天方夜谭的设定,如今在增强现实技术和人形机器人领…...