K8S学习之基础十九:k8s的四层代理Service
K8S四层代理Service
-
四层负载均衡Service
在k8s中,访问pod可以通过ip+端口的方式,但是pod是由生命 周期的,pod在重启的时候ip地址往往会发生变化,访问pod就需要新的ip地址,这样就会很麻烦,每次pod地址改变就要修改访问ip。Service的引进解决了这种问题,通过定义Service资源对象,Service定义一个服务访问的入口,客户端可以通过这个入口访问对应的pod,就算pod重新生成,ip发生变化,Service依旧通过pod标签关联到这个pod,避免连接失败,这样看来,Service可以看做是一组Pod的逻辑组合。
从下图可以看出客户端通过Service访问pod的方式
pid的ip经常变化,service是pod的代理,只要访问service,就能代理到对应的pod
pod的ip在集群外部是无法访问的,通过service,可以在集群之外的机器访问pod
Service是一个固定接入层,客户端可以通过访问Service的ip+port访问到其关联的后端pod。这个service工作以来与k8s集群之上部署的dns附件,现在的版本都是用的coredns。k8s要给客户端提供网络功能,还需要依赖第三方网络插件(flannel、calico等)。每个k8s几点上都有一个组件kube-proxy,始终监视着apiserver中有关service资源的变动信息,跟master上的apiserver交互,随时连接到apiserver获取任何一个与service资源相关的资源变动情况,通过k8s中固有的请求方式watch实现,一旦service资源内容发生变动(如创建删除等),kube-proxy都会将它转化成当前几点之上能够实现service资源调度,把请求调度到后端特定pod资源之上的规则,可能是iptables,也可能是ipvs,这个取决于service的实现方式。
k8s在创建Service的时候,会根据标签选择器selector来查找pod,据此创建与Service同名的endpoint对象,当pod地址发生变化时,endpoint也会随之发生变化,service接收全段client请求时,就会通过endpoint,找到转发到哪个pod进行访问的地址,至于转发到哪个节点的pod,有负载均衡kube-proxy决定 -
k8s集群中的三类ip地址
Node Network(节点网络):物理节点或者虚拟节点的网络
Pod network(pod网络):创建的pod的ip地址,在创建集群时指定网段
ClusterNetwork(集群地址):也成为service network,这是个虚拟的ip地址,没有配置在某个接口上,只是出现在service规则当中。
-
service的四种类型,先创建一组pod,然后分别用不同类型的service测试
vi service-pod.yaml apiVersion: apps/v1 kind: Deployment metadata:name: my-nginx spec:replicas: 3selector:matchLabels:app: my-nginxversion: v1template:metadata:labels:app: my-nginxversion: v1spec:containers:- name: my-nginximage: 172.16.80.140/nginx/nginx:1.26imagePullPolicy: IfNotPresentports:- containerPort: 80
ClusterIP:
默认类型:创建 Service 时,默认类型为 ClusterIP。
作用:为集群内部提供访问,Service 会分配一个内部 IP,只能在集群内部访问。
适用场景:适用于集群内部服务间的通信。
bash vi service-clusterip.yaml apiVersion: v1 kind: Service metadata: name: my-service spec: selector: app: my-nginx ports: - protocol: TCP. # 协议类型 port: 80 # service的端口 targetPort: 80 # 对应pod中容器的端口
同时会创建一个endpoints(简称ep)   可通过访问service的方式,访问到代理的pod,即使pod被删除一个,deploy创建一个新的pod,ip发生变化,但是pod标签没有变化,service没有变化,依然可以代理到所有同样标签的pod之上。
NodePort:
作用:在 ClusterIP 基础上,通过每个节点的 IP 和静态端口(NodePort)暴露服务,外部可通过 : 访问。
端口范围:默认范围为 30000-32767。
适用场景:适用于需要从集群外部访问的服务。
上面的clusterip类型的service,只能在集群内部访问,无法在集群外部访问。为了解决这个问题,可以使用NodePort类型的service```bashvi service-nodeport.yaml kind: Servicemetadata:name: my-servicespec:type: NodePortselector:app: my-nginxports:- protocol: TCPport: 80targetPort: 80```生成一个nodeport类型的service,不但可以在集群内部访问,还可以通过访问node+port的方式访问,端口可以指定,也可以默认生成。其中node指集群中所有的节点。 
LoadBalancer:
作用:在 NodePort 基础上,使用云服务商的负载均衡器将服务暴露到外部,自动分配外部 IP。
适用场景:适用于在云环境中需要外部访问的服务。
ExternalName:
作用:将 Service 映射到外部 DNS 名称,不提供负载均衡或代理,仅返回 CNAME 记录。
适用场景:适用于将服务指向外部资源。
相关文章:

K8S学习之基础十九:k8s的四层代理Service
K8S四层代理Service 四层负载均衡Service 在k8s中,访问pod可以通过ip端口的方式,但是pod是由生命 周期的,pod在重启的时候ip地址往往会发生变化,访问pod就需要新的ip地址,这样就会很麻烦,每次pod地址改变就…...

揭开AI-OPS 的神秘面纱 第六讲 AI 模型服务层 - 开源模型选型与应用 (时间序列场景|图神经网络场景)
时间序列场景 AI 模型服务层 - 开源模型选型与应用 (时间序列场景) 在 AI-Ops 中,时间序列数据分析主要应用于以下场景: 指标预测: 预测 Metrics 指标 (例如 CPU 使用率、内存使用率、网络流量、请求延迟等) 的未来趋势,用于容量规划、资源调度、异常检测等。异常检测: 检…...
在Dify中访问Gemini等模型代理设置指南
问题背景 Google Gemini模型可纯免费使用,且性能也相当不错,一般个人使用或研究足够。但在在国内访问,需设置代理。在Docker部署Dify时,虽然按官方文档介绍设置代理环境变量,但实测发现并不生效。我们通过研究试验解决…...

MySQL的安装以及数据库的基本配置
MySQL的安装及配置 MySQL的下载 选择想要安装的版本,点击Download下载 Mysql官网下载地址: https://downloads.mysql.com/archives/installer/ MySQL的安装 选择是自定义安装,所以直接选择“Custom”,点击“Next” …...
设备树的组成
根节点下含有 compatile 属性的子节点 含有特定 compatile 属性的节点的子节点 如果一个节点的 compatile 属性,它的值是这 4 者之一:"simple-bus","simple-mfd","isa","arm,amba-bus", 那 么 它 的 子结点 (…...

C++入门——输入输出、缺省参数
C入门——输入输出、缺省参数 一、C标准库——命名空间 std C标准库std是一个命名空间,全称为"standard",其中包括标准模板库(STL),输入输出系统,文件系统库,智能指针与内存管理&am…...

deepseek 本地部署
deepseek 本地部署 纯新手教学,手把手5分钟带你在本地部署一个私有的deepseek,再也不用受网络影响。流畅使用deepseek!!! 如果不想看文章,指路:Deep seek R1本地部署 小白超详细教程 ࿰…...

[网络爬虫] 动态网页抓取 — Selenium 入门操作
🌟想系统化学习爬虫技术?看看这个:[数据抓取] Python 网络爬虫 - 学习手册-CSDN博客 0x01:WebDriver 类基础属性 & 方法 为模仿用户真实操作浏览器的基本过程,Selenium 的 WebDriver 模块提供了一个 WebDriver 类…...
HTML 超链接(简单易懂较详细)
在 HTML 中,超链接是通过 <a> 标签(anchor tag)创建的。超链接允许用户通过点击文本、图像或其他元素跳转到另一个网页、文件或页面的特定部分。本文将详细介绍 HTML 超链接的语法、属性和应用场景。 一、基本语法 <a href"U…...
rpc和proto
rpc全称远程过程控制,说白了是一种对信息发送和接收的规则编写方法,来自google,这些规则会以protobuf代码存到proto文件里。我以autoGen中agent_worker.proto为例,大概长这样 syntax "proto3";package agents;option …...

OPENGLPG第九版学习 -颜色、像素和片元 PART1
文章目录 4.1 基本颜色理论4.2 缓存及其用途颜色缓存深度缓存 / z缓存 / z-buffer模板缓存 4.2.1 缓存的清除4.2.2 缓存的掩码 4.3 颜色与OpenGL4.3.1 颜色的表达与OpenGL4.3.2 平滑数据插值 4.4 片元的测试与操作4.4.1 剪切测试4.4.2 多重采样的片元操作4.4.3 模板测试模板查询…...

【js逆向】某精灵网
地址:aHR0cHM6Ly93d3cuamluZ2xpbmdzaHVqdS5jb20vYXJ0aWNsZXM f12查看数据包,下面这个不是,你得到的是你的用户信息,需要点击第2页才会显示数据接口 查看载荷 查看预览数据,发现是加密的 查看启动器,看到 Pr…...

自然语言处理:高斯混合模型
介绍 大家好,博主又来给大家分享知识了,今天给大家分享的内容是自然语言处理中的高斯混合模型。 在自然语言处理这个充满挑战与机遇的领域,我们常常面临海量且复杂的文本数据。如何从这些数据中挖掘出有价值的信息,对文本进行有…...

RISC-V汇编学习(三)—— RV指令集
有了前两节对于RISC-V汇编、寄存器、汇编语法等的认识,本节开始介绍RISC-V指令集和伪指令。 前面说了RISC-V的模块化特点,是以RV32I为作为ISA的核心模块,其他都是要基于此为基础,可以这样认为:RISC-V ISA 基本整数指…...

OpenCV连续数字识别—可运行验证
前言 文章开始,瞎说一点其他的东西,真的是很离谱,找了至少两三个小时,就一个简单的需求: 1、利用OpenCV 在Windows进行抓图 2、利用OpenCV 进行连续数字的检测。 3、使用C,Qt 3、将检测的结果显示出来 …...
Python中与字符串操作相关的30个常用函数及其示例
以下是Python中与字符串操作相关的30个常用函数及其示例: 1. str.capitalize() 将字符串的第一个字符大写,其余字符小写。 s "hello world" print(s.capitalize()) # 输出: Hello world2. str.lower() 将字符串中的所有字符转换为小写。…...

007-Property在C++中的实现与应用
Property在C中的实现与应用 以下是在C中实现属性(Property)的完整实现方案,结合模板技术和运算符重载实现类型安全的属性访问,支持独立模块化封装: #include <iostream> #include <functional>template<typename HostType, t…...

【实战篇】【DeepSeek 全攻略:从入门到进阶,再到高级应用】
凌晨三点,某程序员在Stack Overflow上发出灵魂拷问:“为什么我的DeepSeek会把财务报表生成成修仙小说?” 这个魔性的AI工具,今天我们就来场从开机键到改造人类文明的硬核教学。(文末含高危操作集锦,未成年人请在师父陪同下观看) 一、萌新村任务:把你的电脑变成炼丹炉 …...

clickhouse属于国产吗
《ClickHouse:探索其背景与国内的应用实例》 当我们谈论数据库技术时,ClickHouse是一个绕不开的话题。很多人可能会好奇,ClickHouse是否属于国产软件呢?答案是,虽然ClickHouse最初并非在中国开发,但这款列…...

ESP32 UART select解析json数据,上位机控制LED灯实验
前言: 本实验的目的主要是通过上位机通过UART来控制ESP32端的LED的点亮以及熄灭,整个项目逻辑比较简单,整体架构如下: 上位机(PC)主要是跑在PC端的一个软件,主要作用包含: 1)串口相关配置&…...

【JVM】- 内存结构
引言 JVM:Java Virtual Machine 定义:Java虚拟机,Java二进制字节码的运行环境好处: 一次编写,到处运行自动内存管理,垃圾回收的功能数组下标越界检查(会抛异常,不会覆盖到其他代码…...

如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
反射获取方法和属性
Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...

【JavaWeb】Docker项目部署
引言 之前学习了Linux操作系统的常见命令,在Linux上安装软件,以及如何在Linux上部署一个单体项目,大多数同学都会有相同的感受,那就是麻烦。 核心体现在三点: 命令太多了,记不住 软件安装包名字复杂&…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容
目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表
##鸿蒙核心技术##运动开发##Sensor Service Kit(传感器服务)# 前言 在运动类应用中,运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据,如配速、距离、卡路里消耗等,用户可以更清晰…...

安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲
文章目录 前言第一部分:体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分:体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...

CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!
本文介绍了一种名为AnomalyAny的创新框架,该方法利用Stable Diffusion的强大生成能力,仅需单个正常样本和文本描述,即可生成逼真且多样化的异常样本,有效解决了视觉异常检测中异常样本稀缺的难题,为工业质检、医疗影像…...
SpringAI实战:ChatModel智能对话全解
一、引言:Spring AI 与 Chat Model 的核心价值 🚀 在 Java 生态中集成大模型能力,Spring AI 提供了高效的解决方案 🤖。其中 Chat Model 作为核心交互组件,通过标准化接口简化了与大语言模型(LLM࿰…...

简约商务通用宣传年终总结12套PPT模版分享
IOS风格企业宣传PPT模版,年终工作总结PPT模版,简约精致扁平化商务通用动画PPT模版,素雅商务PPT模版 简约商务通用宣传年终总结12套PPT模版分享:商务通用年终总结类PPT模版https://pan.quark.cn/s/ece1e252d7df...