kubenetes-服务发现和负载均衡

news2024/9/23 11:16:53

一、服务发布

kubenetes把服务发布至集群内部或者外部,服务的三种不同类型:

  1. ClusterlP
  2. NodePort
  3. LoadBalancer

ClusterIP是发布至集群内部的一个虚拟IP,通过负载均衡技术转发到不同的pod中。
NodePort解决的是集群外部访问的问题,用户可能不能访问pod ip,但是可以访问Node ip,通过nodeIP:nodePort方式提供给外部流量访问。
LoadBalancer类型需要和外部负载均衡设备做交互,需要特定的controller来支撑。

二、服务发现

  1. 微服务架构是由一系列职责单一的细粒度服务构成的分布式网状结构,服务之间通过轻量机制进行通信,这时候必然引入一个服务注册发现问题,也就是说服务提供方要注册通告服务地址,服务的调用方要能发现目标服务。
  2. 同时服务提供方一般以集群方式提供服务,也就引入了负载均衡和健康检查问题。

2.1 集中式LB服务发现

在这里插入图片描述
集中式LB方案实现简单,在LB上也容易做集中式的访问控制,这一方案目前还是业界主流。
集中式LB的主要问题是单点问题,所以服务调用流量都经过LB,当服务数量和调用量大的时候,LB容易成为瓶颈,且LB一旦发生故障,对整个系统的影响将是灾难性的。
集中式LB在消费者和服务提供方之间增加了一跳,有一定性能开销。

2.2 客户端LB服务发现

在这里插入图片描述
客户端LB是一种分布式模式,LB和服务发现能力被分散到每一个服务消费者的进程内部,同时服务消费方和服务提供方之间是直接调用,没有额外开销,性能比较好。该方案以客户库(Client Library)的方式集成到服务调用方进程里头,如果企业内有多种不同的语言栈,就要配合开发多种不同的客户端,有一定的研发和维护成本。
一旦客户端跟随服务调用方发布到生产环境中,后续如果要对客户库进行升级,势必要求服务调用方修改代码并重新发布,所以该方案的升级推广有不小的阻力。

2.3 客户端独立LB进程服务发现

在这里插入图片描述
客户端独立LB进程也是一种分布式方案,没有单点问题,一个LB进程挂了只影响该主机上的服务调用方。
服务调用方和LB之间是进程间调用,性能好。
简化了服务调用方,不需要为不同语言开发客户库,LB的升级不需要服务调用方改代码。
不足是部署较复杂,环节多,出错调试排查问题不方便。

三、负载均衡

3.1 互联网架构发展历程

在这里插入图片描述

3.2 网络包格式

在这里插入图片描述
所谓的负载均衡技术,就是在网络包上修改转化技术,比如将目标ip和port进行修改。在链路层修改目标MAC地址,就是链路层的负载均衡,也叫7层负载均衡。在传输层和网络层修改目标ip和port,就是传输层和网络层的负载均衡,统称4层负载均衡。

3.3 负载均衡技术概览

在这里插入图片描述

3.3.1 网络地址转换

在这里插入图片描述

3.3.2 隧道技术

负载均衡中常用的隧道技术是IP over IP,其原理是保持原始数据包IP头不变,在IP头外层增加额外的IP包头后转发给上游服务器。
上游服务器接收IP数据包,解开外层IP包头后,剩下的是原始数据包。
同样的,原始数据包中的目标IP地址要配置在上游服务器中,上游服务器处理完数据请求以后,响应包通过网关直接返回给客户端。
Overlay中的VXLAN就是一种隧道技术。

3.4 DNS负载均衡

DNS负载均衡技术的实现原理是在DNS服务器中为同一个域名配置多个IP地址,在应答DNS查询时,DNS服务器通过算法返回其中一个IP,将客户端的访问引导到不同的机器上去,使得不同的客户端访问不同的服务器,从而达到负载均衡的目的。
严格来说,DNS服务器只是做域名解析,并没有承接请求流量。
DNS域名解析需要注意TTL问题,TTL记录了一个DNS记录在缓存中的有效时间,即多长时间后缓存将过期并需要重新查询。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1228666.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【MySQL--->事务】

文章目录 [TOC](文章目录) 一、基本概念二、事务的操作1.设置全局事务隔离级别2.设置事务提交方式3.事务操作 三、事务隔离性1.隔离性概念2 .隔离级别设置 四、MVCC多版本控制2. read view 一、基本概念 事务是由若干条具有逻辑相关性的SQL语句组成的,用来完成某种任务的**逻辑…

java“俄罗斯方块”

首先新建议一个包为Tetris (俄罗斯方块) 类名也叫做Tetris; 代码运行: package Tetris; import java.awt.BorderLayout; import java.awt.Color; import java.awt.GridLayout; import java.awt.event.KeyEvent; import java.aw…

【运维篇】Redis常见运维命令详解

文章目录 1. 前言2. 连接管理命令详解2.1 AUTH命令2.2 PING命令2.3 SELECT命令2.4 QUIT命令 3. 服务器管理命令详解3.1 FLUSHALL命令3.2 SAVE/BGSAVE命令3.3 SHUTDOWN命令 4. 安全管理命令详解4.1 CONFIG命令4.1.1 CONFIG SET命令用法4.1.2 CONFIG GET命令用法 4.2 AUTH命令 5.…

开源更安全? yum源配置/rpm 什么是SSH?

文章目录 1.开放源码有利于系统安全2.yum源配置,这一篇就够了!(包括本地,网络,本地共享yum源)3.rpm包是什么4.SSH是什么意思?有什么功能? 1.开放源码有利于系统安全 开放源码有利于系统安全 2.yum源配置…

代码随想录刷题】Day16 二叉树

文章目录 1.【104】二叉树的最大深度(优先掌握递归)1.1 题目描述1.2 java代码实现 2.【111】二叉树的最小深度(优先掌握递归)2.1 题目描述2.2 java代码实现 3.【222】完全二叉树的节点个数3.1 题目描述3.2 java代码实现 【104】二…

6 Redis的慢查询配置

1、redis的命令执行流程 redis的慢查询只针对步骤3 默认情况下,慢查询的阈值是10ms 在配置文件中进行配置 //这个参数的单位为微秒 //如果将这个值设置为负数,则会禁用慢日志功能 //如果将其设置为0,则会强制记录每个命令 slowlog-log-slow…

Java21新增特性

版本介绍 Java 21是Java平台的一个新版本,于2023年9月19日由Oracle公司正式发布。这个版本包含了数千个性能、稳定性和安全性更新,以及几十个新功能和增强。其中,15个增强被赋予了自己的JDK增强提案(JEP),…

回归预测 | Matlab实现HPO-ELM猎食者算法优化极限学习机的数据回归预测

回归预测 | Matlab实现HPO-ELM猎食者算法优化极限学习机的数据回归预测 目录 回归预测 | Matlab实现HPO-ELM猎食者算法优化极限学习机的数据回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 Matlab实现HPO-ELM猎食者算法优化极限学习机的数据回归预测(…

Linux系统编程 day02 vim、gcc、库的制作与使用

Linux系统编程 day02 vim、gcc、库的制作与使用 01. vim0101. 命令模式下的操作0102. 切换到文本输入模式0103. 末行模式下的操作0104. vim的配置文件 02. gcc03. 库的制作与使用0301. 静态库的制作与使用0302. 动态库(共享库)的制作与使用 01. vim vim是一个编辑器&#xff0…

微服务 Spring Cloud 7,Nacos配置中心的Pull原理,附源码

目录 一、本地配置二、配置中心1、以Nacos为例:2、Pull模式3、也可以通过Nacos实现注册中心 三、配置中心提供了哪些功能四、如何操作配置中心1、配置注册2、配置反注册3、配置查看4、配置变更订阅 五、主流的微服务注册中心有哪些,如何选择?…

在Vue关于ue的computed属性中传递参数

computed的基本用法 computed是Vue实例中一个非常强大的计算属性,它的值主要根据依赖数据而变化。我们可以将一些简单的计算放在computed属性中,从而实现在模板中使用简单的表达式。 但是实际项目中通常有这么一个场景:根据传递不一样的参数值…

pyqt designer的版本问题

之前我的电脑Windows11 python3.12上安装好了pyqt6后,安装不了pyqt6-tools,导致不能使用designer设计师服务。经过摸索,然来只需要安装qt-tools就够了。qt-tools在plugin包里。比如文章顶部的资源包,下载下来直接使用pip安装该whl…

学生邮箱白嫖/免费安装JetBrains全家桶(IDEA/pycharm等) —— 保姆级教程

🧸欢迎来到dream_ready的博客,📜相信您对博主首页也很感兴趣o (ˉ▽ˉ;) 博主首页,更多redis、java等优质好文以及各种保姆级教程等您挖掘! 目录 前言 JetBrains全家桶介绍 申请过程: 获取学…

Appium自动化测试:通过appium的inspector功能无法启动app的原因

在打开appium-desktop程序,点击inspector功能,填写app的配置信息,启动服务提示如下: 报错信息: An unknown server-side error occurred while processing the command. Original error: Cannot start the cc.knowyo…

【NI-DAQmx入门】频率测量

1.频率概述 时域表示给出了信号在采样时刻的幅度。 频率是指循环或周期事件的复现率,对于模拟或数字波形,信号周期的倒数就是频率。快速傅立叶变换 (FFT) 提供了一种检查频域关系的方法。傅里叶定理指出,时域中的任何波形都可以用正弦和余弦的…

【Flink】窗口(Window)

窗口理解 窗口(Window)是处理无界流的关键所在。窗口可以将数据流装入大小有限的“桶”中,再对每个“桶”加以处理。 本文的重心将放在 Flink 如何进行窗口操作以及开发者如何尽可能地利用 Flink 所提供的功能。 对窗口的正确理解&#xff…

【Django-DRF用法】多年积累md笔记,第3篇:Django-DRF的序列化和反序列化详解

本文从分析现在流行的前后端分离Web应用模式说起,然后介绍如何设计REST API,通过使用Django来实现一个REST API为例,明确后端开发REST API要做的最核心工作,然后介绍Django REST framework能帮助我们简化开发REST API的工作。 全…

Ps:变换

可以向选区、整个图层、多个图层或图层蒙版应用变换 Transform,还可以向路径、矢量形状、矢量蒙版、选区边界或 Alpha 通道应用变换。 若要变换栅格(像素)图像,建议先将其转换为智能对象,以便进行非破坏性的变换。 Ps菜…

【Flink】核心概念:并行度与算子链

并行度(Parallelism) 当要处理的数据量非常大时,我们可以把一个算子操作,“复制”多份到多个节点,数据来了之后就可以到其中任意一个执行。这样一来,一个算子任务就被拆分成了多个并行的“子任务”&#x…

计算机毕业设计 基于SpringBoot的健身房管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解目录

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…