【kubernetes】service
目录
- 1. 说明
- 2. 原理
- 2.1 服务注册
- 2.2 服务发现
- 2.3 负载均衡
- 3. Service的类型
- 3.1 ClusterIP
- 3.2 NodePort
- 3.3 LoadBalancer
- 3.4 ExternalName
- 4. 使用场景
1. 说明
- 1.kubernetes中的service主要用于提供网络服务,并实现微服务架构中的几个核心功能:全自动的服务注册、服务发现、服务负载均衡等。
- 2.Service在kubernetes中代表了一组Pod的逻辑集合,为Pod提供了一个统一的访问地址和端口。
- 3.通过service的定义,可以对客户端应用屏蔽后端Pod实例数量及Pod IP地址的变化。
- 4.service能够对客户端的请求通过负载均衡策略转发到后端Pod实例,为客户端应用提供一个稳定的服务访问入口地址。
2. 原理
2.1 服务注册
- 1.创建service时,kubernetes会自动创建与service关联的Endpoints资源对象。
- 2.Endpoints对象用于存储Service对应的后端容器应用访问地址列表,即后端Pod的“IP:Port”列表。
- 3.这是由Endpoints Controller完成的,它负责生成和维护所有Endpoints对象。
- 4.Endpoints Controller会持续监听Service和对应的Pod副本列表的变化,在Pod列表发生变化时,实时更新对应的Service的Endpoints对象。
2.2 服务发现
- 1.Kubernetes提供了两种机制供客户端应用以固定的方式获取后端服务的访问地址:环境变量方式和DNS方式。
- 2.客户端Pod在创建时,系统会自动为其容器运行环境注入集群中所有有效Service的信息。
- 3.同时,能够感知集群的DNS服务器(例如CoreDNS)会监视Kubernetes API中的新Service,并为每个Service创建一组DNS记录。
- 4.客户端应用可以通过这两种方式发现需要访问的Service。
2.3 负载均衡
- 1.从Service虚拟IP到后端Pod的负载均衡机制,是由每个Node上的kube-proxy负责实现的。
- 2.kube-proxy可以通过iptables或IPVS模式来实现流量的转发和负载均衡。
- 3.iptables模式使用Linux netfilter处理流量,无需在用户空间和内核空间之间切换,系统开销较低。
- 4.而IPVS模式使用哈希表作为底层数据结构,在内核空间中生效,因此比iptables模式重定向流量的延迟更低,同步代理规则时性能也更好。
3. Service的类型
3.1 ClusterIP
- 1.这是默认的Service类型。
- 2.ClusterIP类型的Service仅在集群内部可访问,外部应用无法直接访问。
- 3.创建Service时,Kubernetes会为Service分配一个虚拟IP地址(ClusterIP),该IP地址仅在集群内部可访问。
3.2 NodePort
- 1.NodePort类型的Service除了在集群内部可访问之外,还可以通过节点的IP地址和NodePort端口号从外部访问。
- 2.创建Service时,Kubernetes会为Service分配一个NodePort端口号,该端口号在所有节点上都可用。
- 3.外部应用可以通过节点的IP地址和NodePort端口号访问Service。
- 4.但这种方式会在集群内每个节点上都占用一个端口,可能会浪费资源。
3.3 LoadBalancer
- 1.LoadBalancer类型的Service在支持LoadBalancer的公有云环境中使用。
- 2.云提供商会自动为这个Service配置一个负载均衡器,并将流量转发到Service的NodePort上。
- 3.这种方式需要额外的成本,例如云服务商的负载均衡器费用。
3.4 ExternalName
- 1.ExternalName类型的Service将Service的名称映射到一个外部域名,使得集群内部可以通过这个Service名称来访问外部的域名。
4. 使用场景
- 1.内部服务暴露:对于仅在集群内部使用的服务,可以使用ClusterIP类型的Service来暴露。
- 2.外部访问服务:对于需要从外部访问的服务,可以使用NodePort或LoadBalancer类型的Service。NodePort类型适用于小规模集群或测试环境,而LoadBalancer类型则适用于需要高可用性和可扩展性的生产环境。
- 3.引入外部服务:对于集群外部的服务,可以使用ExternalName类型的Service将其引入到集群内部来使用。
相关文章:
【kubernetes】service
目录 1. 说明2. 原理2.1 服务注册2.2 服务发现2.3 负载均衡 3. Service的类型3.1 ClusterIP3.2 NodePort3.3 LoadBalancer3.4 ExternalName 4. 使用场景 1. 说明 1.kubernetes中的service主要用于提供网络服务,并实现微服务架构中的几个核心功能:全自动…...
嵌入式学习笔记-卡尔曼滤波,PID,MicroPython
文章目录 卡尔曼滤波卡尔曼滤波的核心思想卡尔曼滤波的数学模型1. 状态转移模型(预测系统状态)2. 观测模型(预测测量值) 卡尔曼滤波的五个关键步骤1. 预测状态2. 预测误差协方差3. 计算卡尔曼增益4. 更新状态5. 更新误差协方差 卡…...
什么是hive
Apache Hive 是一个基于 Hadoop 生态系统构建的数据仓库工具,主要用于处理和分析大规模的结构化数据。它允许用户通过类似 SQL 的查询语言(HiveQL)进行数据操作,而无需直接编写复杂的 MapReduce 程序。以下是 Hive 的核心特点和应…...
MAC电脑常用操作
环境:M3芯片 ,macOS15.2 🚀 快捷键 🖥️ 窗口管理 ✅ 退出/进入全屏模式 • 浏览器等应用:⌘ Command Ctrl F ✅ 最小化当前窗口 • ⌘ Command M • 💡 隐藏窗口但保留应用在后台运行 ✅ 关闭当前标…...
leetcode 1287. 有序数组中出现次数超过25%的元素 简单
给你一个非递减的 有序 整数数组,已知这个数组中恰好有一个整数,它的出现次数超过数组元素总数的 25%。 请你找到并返回这个整数 示例: 输入:arr [1,2,2,6,6,6,6,7,10] 输出:6提示: 1 < arr.length…...
3.8【Q】cv
这个draw_line函数的逻辑和功能是什么?代码思路是什么?怎么写的? 这个t是什么?t.v[0]和t.v[1],[2]又是什么? void rst::rasterizer::draw(rst::pos_buf_id pos_buffer, rst::ind_buf_id ind_buffer, rst::Primitive ty…...
upload-labs文件上传
第一关 上传一个1.jpg的文件,在里面写好一句webshell 保留一个数据包,将其中截获的1.jpg改为1.php后重新发送 可以看到,已经成功上传 第二关 写一个webshell如图,为2.php 第二关在过滤tpye的属性,在上传2.php后使用b…...
PyTorch中Tensor对象的属性和方法
目录 一、核心属性 复数支持 转置与视图操作 元信息 梯度相关 二. 常用方法 基本操作 转置与视图 数学运算 深度学习相关 3. 使用示例 梯度计算 设备管理 自定义反向传播 4. 注意事项 总结 一、核心属性 1.requires_grad: _bool: 该…...
C++20 格式化库:强大的字符串格式化工具
文章目录 格式化语法常见用法1. 填充和对齐2. 数值格式化3. 进制格式化4. 自定义类型 示例代码注意事项 C20 的格式化库是一个强大的工具,用于处理字符串的格式化操作。它提供了类似于 Python 中 str.format() 的功能,但语法和用法更符合 C 的风格。以下…...
[傻瓜式教学]如何将MathType公式编辑器内嵌到WPS工具栏中
[傻瓜式教学]如何将MathType公式编辑器内嵌到WPS工具栏中 将MathType公式编辑器内嵌到WPS工具栏中 下载好所需文件 我用夸克网盘分享了「mathtype安装教程超简单易上手.zip」,点击链接即可保存。打开「夸克APP」 链接:https://pan.quark.cn/s/4726c684…...
分析TCP三次握手与四次挥手
TCP(传输控制协议)通过三次握手建立连接,四次挥手终止连接,确保数据传输的可靠性。 TCP的三个控制标志位: SYN——用于建立连接,同步序列号。 ACK——用于确认收到的数据。 FIN——用于终止连接。 ISN…...
【深度学习】宠物品种分类Pet Breeds Classifier
文章目录 宠物品种数据集制作宠物品种标签图像预处理Presizing 损失函数loss观察模型的性能提升模型的性能learning rate finder使用CLR算法训练选择学习率的策略重新训练 迁移学习微调fine_tunefit_one_cycle有判别力的学习率 选择epoch的数量更深的网络架构 宠物品种数据集 …...
【从零开始学习计算机科学】HLS算子调度
算子调度 调度是HLS 中的核心问题,为无时序或部分时序的输入指定时钟边界,其对最终结果质量具有很大的影响。调度会影响时钟频率、延时、吞吐率、面积、功耗等多种因素。 调度的输入是控制数据流图,其节点表示算子/操作,有向边表示数据依赖,控制依赖,优先依赖。如果没有…...
centos 安装composer 教程
打开命令行 php -r "copy(https://getcomposer.org/installer, composer-setup.php);" sudo php composer-setup.php --install-dir/usr/local/bin --filenamecomposer composer --version sudo chmod us /usr/local/bin/composer Super18120/article/details/14388…...
C语言_数据结构总结2:动态分配方式的顺序表
0——静态分配内存的顺序表和动态分配内存的顺序表的相同之处和不同之处 相同之处 基本操作逻辑相同:无论是静态分配还是动态分配的顺序表,其核心的操作逻辑是一致的。例如插入操作都需要将插入位置之后的元素依次后移,删除操作都需要将删除…...
嵌入式人工智能应用-第6章 人脸检测
嵌入式人工智能应用 人脸检测 嵌入式人工智能应用1 人脸检测1.1 CNN 介绍1.2 人脸检测原理1.3 MTCNN介绍1.4 NCNN介绍2 系统安装2.1 安装依赖库NCNN2.2 运行对应的库3 总结1 人脸检测 1.1 CNN 介绍 卷积神经网络。卷积是什么意思呢?从数学上说,卷积是一种运算。它是我们学习…...
关于无感方波启动预定位阶段
一、预定位的核心目标与原理 消除启动不确定性 无位置传感器下,转子初始位置未知,直接换相可能导致反转或失步。预定位通过施加固定方向磁场,强制转子对齐至预定角度(通常0或60电角度),建立初始位置基准。 …...
WSL安装及问题
1 概述 Windows Subsystem for Linux(简称WSL)是一个在Windows 10\11上能够运行原生Linux二进制可执行文件(ELF格式)的兼容层。它是由微软与Canonical公司合作开发,开发人员可以在 Windows 计算机上同时访问 Windows 和…...
MySQL中的脏读与幻读:概念、影响与解决方案
在数据库事务处理中,脏读和幻读是两种常见的并发问题,可能导致数据不一致或逻辑错误。本文将结合实际场景,深入解析两者的原理及解决方案。 一、脏读(Dirty Read) 1. 概念解析 脏读指一个事务读取了另一个事务未提交…...
基于SpringBoot的商城管理系统(源码+部署教程)
运行环境 数据库:MySql 编译器:Intellij IDEA 前端运行环境:node.js v12.13.0 JAVA版本:JDK 1.8 主要功能 基于Springboot的商城管理系统包含管理端和用户端两个部分,主要功能有: 管理端 首页商品列…...
HeidiSQL:一款免费的数据库管理工具
HeidiSQL 是一款免费的图形化数据库管理工具,支持 MySQL、MariaDB、Microsoft SQL、PostgreSQL、SQLite、Interbase 以及 Firebird,目前只能在 Windows 平台使用。 HeidiSQL 的核心功能包括: 免费且开源,所有功能都可以直接使用。…...
Ae 效果详解:VR 色差
Ae菜单:效果/沉浸式视频/VR 色差 Immersive Video/VR Chromatic Aberrations VR 色差 VR Chromatic Aberrations效果用于模拟镜头色散现象,在 VR 视频中制造 RGB 通道错位的色彩偏移,以增强视觉风格或创造数字失真效果。 本效果适用于所有色深…...
计算机毕业设计SpringBoot+Vue.js制造装备物联及生产管理ERP系统(源码+文档+PPT+讲解)
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
Ubuntu 安装docker docker-compose
Docker 通过提供轻量级、可移植且高效的解决方案,简化了软件开发和部署。“docker build”命令是 Docker 镜像创建过程的核心。本文将探讨 Docker 构建命令、用法以及 Docker 构建的优化。 Docker 构建有什么作用? Docker build 是一个命令行界面 CLI命…...
【Linux内核系列】:深入解析输出以及输入重定向
🔥 本文专栏:Linux 🌸作者主页:努力努力再努力wz ★★★ 本文前置知识: 文件系统以及文件系统调用接口 用c语言简单实现一个shell外壳程序 内容回顾 那么在此前的学习中,我们对于Linux的文件系统已经有了…...
【linux网络编程】端口
一、端口(Port)概述 在计算机网络中,端口(Port) 是用来标识不同进程或服务的逻辑通信端点。它类似于一座大楼的房间号,帮助操作系统和网络协议区分不同的应用程序,以便正确地传输数据。 1. 端口…...
PyTorch系列教程:Tensor.view() 方法详解
这篇简明扼要的文章是关于PyTorch中的tensor.view()方法的介绍与应用,与reshape()方法的区别,同时给出示例进行详细解释。 Tensor基础 Tensor(张量)的视图是一个新的Tensor,它与原始Tensor共享相同的底层数据,但具有不同的形状或…...
软件测试的基础入门(二)
文章目录 一、软件(开发)的生命周期什么是生命周期软件(开发)的生命周期需求分析计划设计编码测试运行维护 二、常见的开发模型瀑布模型流程优点缺点适应的场景 螺旋模型流程优点缺点适应的场景 增量模型和迭代模型流程适应的场景…...
Springboot + minio
参考: SpringBoot整合Minio_springboot minio-CSDN博客 <!--minio 依赖--><dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><version>8.5.11</version></dependency> applicaio…...
地下变电站如何实现安全智能运营-以110kV站为例看环境监测与设备联控
1、地下变电站简介 在经济发达的地区,由于城市中心土地资源紧张、征地拆迁费用昂贵,因此采用地下变电站来解决这些问题不失为一个好的途径和思路。地下变电站一般采用室内全封闭式组合电气设备,220&#x…...
