【K8S系列】Kubernetes Service 基础知识 详细介绍

在 Kubernetes 中,Service 是一种抽象的资源,用于定义一组 Pod 的访问策略。它为这些 Pod 提供了一个稳定的访问入口,解决了 Pod 可能频繁变化的问题。本文将详细介绍 Kubernetes Service 的类型、功能、使用场景、DNS 和负载均衡等方面。
1. Service 的类型
Kubernetes 提供了几种不同类型的 Service,以满足不同的网络访问需求:
1.1 ClusterIP
- 描述:默认类型,仅在集群内部可访问,提供一个内部 IP 地址。
- 使用场景:适用于集群内部服务之间的通信。
apiVersion: v1
kind: Service
metadata:name: my-service
spec:type: ClusterIPselector:app: my-appports:- port: 80targetPort: 8080
1.2 NodePort
- 描述:在每个节点的指定端口上公开服务,允许外部流量通过节点的 IP 地址访问。
- 使用场景:适用于开发和测试环境,或当没有负载均衡器时。
apiVersion: v1
kind: Service
metadata:name: my-service
spec:type: NodePortselector:app: my-appports:- port: 80targetPort: 8080nodePort: 30007
1.3 LoadBalancer
- 描述:在支持负载均衡的云环境中创建一个外部负载均衡器,将流量分发到对应的 Pod。
- 使用场景:适用于生产环境,提供高可用性和易于访问的外部服务。
apiVersion: v1
kind: Service
metadata:name: my-service
spec:type: LoadBalancerselector:app: my-appports:- port: 80targetPort: 8080
1.4 ExternalName
- 描述:将服务映射到外部 DNS 名称,不会创建代理。
- 使用场景:适用于需要访问外部服务的场景。
apiVersion: v1
kind: Service
metadata:name: my-external-service
spec:type: ExternalNameexternalName: example.com
2. Service 的功能
2.1 负载均衡
Service 提供内置的负载均衡功能,能够自动将流量分发到后端的 Pod。Kubernetes 使用 iptables 或 IPVS 来实现流量的均匀分配。
2.2 服务发现
Service 为 Pod 提供了一个稳定的访问方式,Pod 的 IP 地址可能会变化,但 Service 的 IP 地址和 DNS 名称保持不变。其他 Pod 可以通过 Service 名称访问:
curl http://my-service
2.3 端口映射
Service 允许将外部流量的端口映射到 Pod 内部的端口。例如,将 Service 的 80 端口映射到 Pod 的 8080 端口。
3. Service 的使用场景
3.1 微服务架构
在微服务架构中,各个服务之间需要相互通信。通过使用 Service,可以确保每个服务都有一个稳定的访问入口。
3.2 负载均衡
在处理高流量应用时,Service 可以将请求均匀分配到多个 Pod,以提高应用的可用性和响应速度。
3.3 外部访问
使用 NodePort 或 LoadBalancer 类型的 Service,可以将应用暴露给外部用户,方便访问。
4. DNS 和 Service
Kubernetes 内置了 DNS 服务,为每个 Service 提供了一个 DNS 名称。默认情况下,Service 的 DNS 名称格式为 <service-name>.<namespace>.svc.cluster.local。
4.1 示例
假设有一个名为 my-service 的 Service 在 default 命名空间中,其 DNS 名称为:
my-service.default.svc.cluster.local
其他 Pod 可以通过这个 DNS 名称访问该 Service。
5. 选择器和标签
Service 使用标签选择器来确定哪些 Pod 包含在服务后端。选择器可以精确匹配(如等于)或使用更复杂的逻辑(如 in、notin)。
示例
spec:selector:app: my-app
这种方式将会选择所有带有 app=my-app 标签的 Pod。
6. 访问控制
Kubernetes 提供了网络策略(Network Policies)来控制不同 Pod 之间的通信。通过定义网络策略,可以限制哪些 Pod 可以访问特定的 Service。
示例
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:name: allow-only-my-app
spec:podSelector:matchLabels:app: my-appingress:- from:- podSelector:matchLabels:role: frontend
7. Service 的健康检查
Kubernetes 支持通过 liveness 和 readiness 探针来检查 Pod 的健康状态。Service 仅将流量发送到健康的 Pod。
示例
apiVersion: apps/v1
kind: Deployment
metadata:name: my-app
spec:template:spec:containers:- name: my-containerimage: my-imagelivenessProbe:httpGet:path: /healthzport: 8080initialDelaySeconds: 5periodSeconds: 10readinessProbe:httpGet:path: /readyport: 8080initialDelaySeconds: 5periodSeconds: 10
8. 监控和日志
使用 Service 时,监控其性能和流量至关重要。可以结合工具如 Prometheus、Grafana 等进行监控。
示例监控指标
- 请求速率
- 错误率
- 响应时间
9. 性能优化
为提高 Service 的性能,可以考虑以下几点:
- 使用适当的 Service 类型:根据需求选择 ClusterIP、NodePort 或 LoadBalancer。
- 合理配置端口映射:避免不必要的端口转发。
- 使用网络策略:限制流量以提高安全性和性能。
10. 结论
Kubernetes Service 是集群中至关重要的组件,为 Pod 提供了稳定的访问方式和负载均衡能力。通过合理配置和使用 Service,可以有效管理和优化微服务架构,确保应用的高可用性和可扩展性。了解 Service 的工作原理和使用场景,有助于更好地构建和维护 Kubernetes 集群。
相关文章:
【K8S系列】Kubernetes Service 基础知识 详细介绍
在 Kubernetes 中,Service 是一种抽象的资源,用于定义一组 Pod 的访问策略。它为这些 Pod 提供了一个稳定的访问入口,解决了 Pod 可能频繁变化的问题。本文将详细介绍 Kubernetes Service 的类型、功能、使用场景、DNS 和负载均衡等方面。 1.…...
python在物联网领域的数据应用分析与实战!
引言 物联网(IoT)是一个快速发展的领域,涉及到各种设备和传感器的连接与数据交换。随着设备数量的激增,数据的产生速度也在不断加快。 如何有效地分析和利用这些数据,成为了物联网应用成功的关键。Python作为一种强大的编程语言,因其简洁易用的特性和丰富的库支持,成为…...
目标跟踪算法-卡尔曼滤波详解
卡尔曼滤波是一种递归的优化算法,用于估计一个系统的动态状态,常用于跟踪、导航、时间序列分析等领域。它的关键在于使用一系列测量数据(通常含噪声)来估计系统的真实状态,使得估计值更接近实际情况。卡尔曼滤波器适合…...
SpringBoot后端开发常用工具详细介绍——application多环境配置与切换
文章目录 引言介绍application.yml(主配置文件)application-dev.yml(开发环境配置)application-test.yml(测试环境配置)application-prod.yml(生产环境配置)激活配置文件参考内容 引…...
php反序列化漏洞典型例题
1.靶场环境 ctfhub-技能树-pklovecloud 引用题目: 2021-第五空间智能安全大赛-Web-pklovecloud 2.过程 2.1源代码 启动靶场环境,访问靶场环境,显示源码:直接贴在下面: <?php include flag.php; class pks…...
浅析Android View绘制过程中的Surface
前言 在《浅析Android中View的测量布局流程》中我们对VSYNC信号到达App进程之后开启的View布局过程进行了分析,经过对整个App界面的View树进行遍历完成了测量和布局,确定了View的大小以及在屏幕中所处的位置。但是,如果想让用户在屏幕上看到…...
基于卷积神经网络的大豆种子缺陷识别系统,resnet50,mobilenet模型【pytorch框架+python源码】
更多目标检测和图像分类识别项目可看我主页其他文章 功能演示: 大豆种子缺陷识别系统,卷积神经网络,resnet50,mobilenet【pytorch框架,python源码】_哔哩哔哩_bilibili (一)简介 基于卷积神…...
HarmonyOS项目开发一多简介
目录 一、布局能力概述 二、自适应布局 三、响应式布局 四、典型布局场景 一、布局能力概述 布局决定页面元素排布及显示:在页面设计及开发中,布局能力至关重要,主要通过组件结构来确定使用何种布局。 自适应布局与响应式布局࿱…...
C++基础三
构造函数 构造函数(初始化类成员变量): 1、属于类的成员函数之一 2、构造函数没有返回类型 3、构造函数的函数名必须与类名相同 4、构造函数不允许手动调用(不能通过类对象调用) 5、构造函数在类对象创建时会被自动调用 6、如果没有显示声…...
利用ChatGPT完成2024年MathorCup大数据挑战赛-赛道A初赛:台风预测与分析
利用ChatGPT完成2024年MathorCup大数据挑战赛-赛道A初赛:台风预测与分析 引言 在2024年MathorCup大数据挑战赛中,赛道A聚焦于气象数据分析,特别是台风的生成、路径预测、和降水风速特性等内容。本次比赛的任务主要是建立一个分类评价模型&…...
Linux系统操作篇 one -文件指令及文件知识铺垫
Linux操作系统入门-系统篇 前言 Linux操作系统与Windows和MacOS这些系统不同,Linux是黑屏的操作系统,操作方式使用的是指令和代码行来进行,因此相对于Windows和MacOS这些带有图形化界面的系统,Linux的入门门槛和上手程度要更高&…...
隨筆20241028 ISR 的收缩与扩展及其机制解析
在 Kafka 中,ISR(In-Sync Replicas) 是一组副本,它们与 Leader 保持同步,确保数据一致性。然而,ISR 的大小会因多种因素而变化,包括收缩和扩展。以下是 ISR 收缩与扩展的详细解释及其背后的机制…...
linux-字符串相关命令
1、cut 提取文件每一行中的内容 下面是一些常用的 cut 命令选项的说明: -c, --characters列表:提取指定字符位置的数据。-d, --delimiter分界符:指定字段的分隔符,默认为制表符。-f, --fieldsLIST:提取指定字段的数据…...
ES6 函数的扩展
ES6 之前,不能直接为函数的参数指定默认值,只能采用变通的方法 ES6 允许为函数的参数设置默认值,即直接写在参数定义的后面 参数变量是默认声明的,所以不能用 let 或 const 再次声明 使用参数默认值时,函数不能有同名参…...
Mac 查看占用特定端口、终止占用端口的进程
在 macOS 上,可以使用以下命令来查看占用特定端口(例如 8080)的进程: lsof -i :8080命令说明 lsof:列出打开的文件和网络连接信息。-i :8080:筛选出正在监听 8080 端口的进程。 输出结果结构 执行上述命…...
C#入坑JAVA MyBatis入门 CURD 批量 联表分页查询
本文,分享 MyBatis 各种常用操作,不限于链表查询、分页查询等等。 1. 分页查询 在 下文的 的「3.4 selectPage」小节,我们使用 MyBatis Plus 实现了分页查询。除了这种方式,我们也可以使用 XML 实现分页查询。 这里,…...
RabbitMQ 安装(Windows版本)和使用
安装 安装包获取 可以自己找资源,我这里也有百度云的资源,如果没失效的话可以直接用。 通过百度网盘分享的文件:RabbitMQ 链接:https://pan.baidu.com/s/1rzcdeTIYQ4BqzHLDSwCgyw?pwdfj79 提取码:fj79 安装教程…...
Apache paimon表管理
表管理 2.9.4.1 管理快照 1)快照过期 Paimon Writer每次提交都会生成一个或两个快照。每个快照可能会添加一些新的数据文件或将一些旧的数据文件标记为已删除。然而,标记的数据文件并没有真正被删除,因为Paimon还支持时间旅行到更早的快照。它们仅在快照过期时被删除。 …...
java 第19天
一.Lambda表达式 前提是:参数是函数式接口才可以书写Lambda表达式 函数式接口条件: 1.接口 2.只有一个抽象方法 lambda表达式又称为匿名函数,允许匿名函数以参数的形式传入方法,简化代码 lambda表达式分为两部分()->{} …...
什么是服务器?服务器与客户端的关系?本地方访问不了网址与服务器访问不了是什么意思?有何区别
服务器是一种高性能的计算机,它通过网络为其他计算机(称为客户端)提供服务。这些服务可以包括文件存储、打印服务、数据库服务或运行应用程序等。服务器通常具有强大的处理器、大量的内存和大容量的存储空间,以便能够处理多个客户…...
Android Wi-Fi 连接失败日志分析
1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...
零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?
一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...
聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...
【论文阅读28】-CNN-BiLSTM-Attention-(2024)
本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...
学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2
每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...
Pinocchio 库详解及其在足式机器人上的应用
Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...
「全栈技术解析」推客小程序系统开发:从架构设计到裂变增长的完整解决方案
在移动互联网营销竞争白热化的当下,推客小程序系统凭借其裂变传播、精准营销等特性,成为企业抢占市场的利器。本文将深度解析推客小程序系统开发的核心技术与实现路径,助力开发者打造具有市场竞争力的营销工具。 一、系统核心功能架构&…...
TJCTF 2025
还以为是天津的。这个比较容易,虽然绕了点弯,可还是把CP AK了,不过我会的别人也会,还是没啥名次。记录一下吧。 Crypto bacon-bits with open(flag.txt) as f: flag f.read().strip() with open(text.txt) as t: text t.read…...
【Ftrace 专栏】Ftrace 参考博文
ftrace、perf、bcc、bpftrace、ply、simple_perf的使用Ftrace 基本用法Linux 利用 ftrace 分析内核调用如何利用ftrace精确跟踪特定进程调度信息使用 ftrace 进行追踪延迟Linux-培训笔记-ftracehttps://www.kernel.org/doc/html/v4.18/trace/events.htmlhttps://blog.csdn.net/…...
