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

K8S学习之基础十九:k8s的四层代理Service

K8S四层代理Service

  1. 四层负载均衡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决定

  2. k8s集群中的三类ip地址
    Node Network(节点网络):物理节点或者虚拟节点的网络
    Pod network(pod网络):创建的pod的ip地址,在创建集群时指定网段
    ClusterNetwork(集群地址):也成为service network,这是个虚拟的ip地址,没有配置在某个接口上,只是出现在service规则当中。
    在这里插入图片描述

  3. 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)
    ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/00ec03b596b8454b861ee8fdde8d268c.png#pic_left =500x)
    ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/c3f7466a79d1497eba00a0965461a21b.png#pic_left =500x)
    可通过访问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指集群中所有的节点。![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6a8a2bc832c74fd9b8ba4dea9a39630d.png#pic_left =500x)
    ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/3b3be03ca43b4b598a228cb43aa0bf69.png#pic_left =500x)
    

    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本地部署 小白超详细教程 &#xff0…...

[网络爬虫] 动态网页抓取 — Selenium 入门操作

🌟想系统化学习爬虫技术?看看这个:[数据抓取] Python 网络爬虫 - 学习手册-CSDN博客 0x01:WebDriver 类基础属性 & 方法 为模仿用户真实操作浏览器的基本过程,Selenium 的 WebDriver 模块提供了一个 WebDriver 类…...

HTML 超链接(简单易懂较详细)

在 HTML 中&#xff0c;超链接是通过 <a> 标签&#xff08;anchor tag&#xff09;创建的。超链接允许用户通过点击文本、图像或其他元素跳转到另一个网页、文件或页面的特定部分。本文将详细介绍 HTML 超链接的语法、属性和应用场景。 一、基本语法 <a href"U…...

rpc和proto

rpc全称远程过程控制&#xff0c;说白了是一种对信息发送和接收的规则编写方法&#xff0c;来自google&#xff0c;这些规则会以protobuf代码存到proto文件里。我以autoGen中agent_worker.proto为例&#xff0c;大概长这样 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逆向】某精灵网

地址&#xff1a;aHR0cHM6Ly93d3cuamluZ2xpbmdzaHVqdS5jb20vYXJ0aWNsZXM f12查看数据包&#xff0c;下面这个不是&#xff0c;你得到的是你的用户信息&#xff0c;需要点击第2页才会显示数据接口 查看载荷 查看预览数据&#xff0c;发现是加密的 查看启动器&#xff0c;看到 Pr…...

自然语言处理:高斯混合模型

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

RISC-V汇编学习(三)—— RV指令集

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

OpenCV连续数字识别—可运行验证

前言 ​ 文章开始&#xff0c;瞎说一点其他的东西&#xff0c;真的是很离谱&#xff0c;找了至少两三个小时&#xff0c;就一个简单的需求&#xff1a; 1、利用OpenCV 在Windows进行抓图 2、利用OpenCV 进行连续数字的检测。 3、使用C&#xff0c;Qt 3、将检测的结果显示出来 …...

Python中与字符串操作相关的30个常用函数及其示例

以下是Python中与字符串操作相关的30个常用函数及其示例&#xff1a; 1. str.capitalize() 将字符串的第一个字符大写&#xff0c;其余字符小写。 s "hello world" print(s.capitalize()) # 输出: Hello world2. str.lower() 将字符串中的所有字符转换为小写。…...

007-Property在C++中的实现与应用

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

【实战篇】【DeepSeek 全攻略:从入门到进阶,再到高级应用】

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

clickhouse属于国产吗

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

ESP32 UART select解析json数据,上位机控制LED灯实验

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

效率提升秘籍:用快马平台一键生成21届智能车优化算法模块

提升21届智能车开发效率的实战经验分享 最近在准备21届智能车比赛时&#xff0c;我发现传统开发方式存在不少效率瓶颈。从底层驱动到算法框架&#xff0c;每个环节都需要大量时间调试&#xff0c;而比赛周期又非常紧张。经过反复摸索&#xff0c;我总结出一套能显著提升开发效…...

从乱码到清晰:一位开发者与iText7中文PDF的三年斗争史

从乱码到清晰&#xff1a;一位开发者与iText7中文PDF的三年斗争史 【免费下载链接】itext7-chinese-font 项目地址: https://gitcode.com/gh_mirrors/it/itext7-chinese-font "为什么我的PDF中文又变成方块了&#xff1f;" 这可能是每个Java开发者在处理中文P…...

Llama-3.2V-11B-cot效果实测:同一张图不同提问下的CoT推理路径对比分析

Llama-3.2V-11B-cot效果实测&#xff1a;同一张图不同提问下的CoT推理路径对比分析 1. 工具概览与测试目标 Llama-3.2V-11B-cot是基于Meta多模态大模型开发的专业视觉推理工具&#xff0c;特别针对双卡4090环境进行了深度优化。本次测试将聚焦其核心功能——Chain of Thought…...

OpenClaw自动化邮件处理:GLM-4.7-Flash模型分类与回复

OpenClaw自动化邮件处理&#xff1a;GLM-4.7-Flash模型分类与回复 1. 为什么需要自动化邮件处理 每天早晨打开邮箱时&#xff0c;我的收件箱总是堆满了各种邮件——工作汇报、会议邀请、订阅资讯、促销广告……手动分类和回复这些邮件至少会消耗我30分钟时间。直到上个月&…...

Crawl4AI浏览器配置文件创建与键盘交互处理终极指南:打造个性化爬虫身份

Crawl4AI浏览器配置文件创建与键盘交互处理终极指南&#xff1a;打造个性化爬虫身份 【免费下载链接】crawl4ai &#x1f525;&#x1f577;️ Crawl4AI: Open-source LLM Friendly Web Crawler & Scrapper 项目地址: https://gitcode.com/GitHub_Trending/craw/crawl4ai…...

SEO_从基础到精通,系统学习SEO的完整路径解析

<h2>SEO的基础&#xff1a;了解搜索引擎优化的核心概念</h2> <p>搜索引擎优化&#xff08;SEO&#xff09;是一个广泛且复杂的领域&#xff0c;它的核心在于提升网站在搜索引擎结果页面&#xff08;SERP&#xff09;中的自然排名。了解SEO的基础概念是每一个…...

Offline-First数据同步策略:解决网络中断的智能方案

Offline-First数据同步策略&#xff1a;解决网络中断的智能方案 【免费下载链接】offline-first :electric_plug: Everything you need to know to create offline-first web apps. 项目地址: https://gitcode.com/gh_mirrors/of/offline-first 在当今移动优先的时代&am…...

微信JS-SDK分享失败?深度解析“offline verifying”权限验证错误与高效排查指南

还在为微信网页自定义分享功能频繁遭遇“updateAppMessageShareData:fail, the permission value is offline verifying”而头疼&#xff1f;本文将从公众号认证、JS-SDK权限、域名绑定、网络、缓存及API版本六大维度&#xff0c;为您深度剖析此错误成因&#xff0c;并提供一套…...

stm32开发新手福音:告别复杂安装,用快马ai生成带详解的hal库基础代码

作为一名刚接触STM32开发的新手&#xff0c;我最近在尝试用HAL库控制GPIO时遇到了不少麻烦。从下载安装STM32CubeMX到配置工程&#xff0c;每一步都让我这个小白手忙脚乱。直到发现了InsCode(快马)平台&#xff0c;整个过程变得简单多了——不需要自己搭建环境&#xff0c;AI就…...

智能工单管理系统 2026 怎么挑?五款热门平台对比,适配企业各类业务场景

工单智能化应用&#xff1a;帮您告别工单苦海 传统工单系统的痛点&#xff0c;本质是信息处理效率与用户体验的矛盾。随着AI 的发展&#xff0c;工单智能化应用的核心逻辑转变为&#xff0c;通过AI技术将“人找信息”转变为“信息找人”&#xff0c;甚至“预测需求”。 工单管…...