k8s 四种Service类型(ClusterIP、NodePort、LoadBalancer、ExternalName)详解

article/2025/8/4 15:58:24

🐇明明跟你说过:个人主页

🏅个人专栏:《Kubernetes航线图:从船长到K8s掌舵者》 🏅

🔖行路有良友,便是天堂🔖

目录

一、引言

1、k8s概述

2、Service在Kubernetes中的作用

二、ClusterIP类型

1、ClusterIP 类型的特点和用途

2、ClusterIP 的工作机制

3、创建示例

4、ClusterIP 使用场景 

三、NodePort类型

1、NodePort 类型的特点和用途

2、NodePort 的工作机制

3、创建示例

4、NodePort 使用场景

5、注意事项

四、LoadBalancer类型

1、LoadBalancer 类型的特点和用途

2、LoadBalancer 的工作机制

3、创建示例

4、使用场景

5、注意事项

五、ExternalName类型

1、ExternalName 类型的特点和用途

2、ExternalName 的工作机制

3、创建示例

4、使用场景

5、注意事项


一、引言

1、k8s概述

Kubernetes(简称K8s)是一个开源的容器编排平台,用于自动化应用程序的部署、扩展和管理。它最初由谷歌开发,并在2014年捐赠给云原生计算基金会(CNCF)。Kubernetes为容器化应用提供了一个灵活、可扩展和高效的管理平台。

2、Service在Kubernetes中的作用

在 Kubernetes 中,Service 是一种抽象方式,用于定义一组逻辑上的 Pod 以及访问这些 Pod 的策略。Service 解决了 Pod 的生命周期管理和通信问题,提供了稳定的网络端点和负载均衡机制,确保应用程序的高可用性和可扩展性。

主要作用
1. 稳定的访问入口:

  • 每个 Pod 都有自己的 IP 地址,但是这些地址是动态分配的,当 Pod 被删除或重新创建时,IP 地址会发生变化。Service 为一组 Pod 提供一个稳定的 IP 地址和 DNS 名称,使得应用程序可以通过固定的端点进行访问。


2. 负载均衡:

  • Service 会自动将流量分发到后端的一组 Pod 上,进行负载均衡。这样可以均匀分配流量,防止某个 Pod 过载,并提高整体应用的性能和可靠性。


3. 服务发现:

  • Kubernetes 内部有一个 DNS 服务,所有 Service 都会在这个 DNS 中注册。当应用程序需要访问某个 Service 时,可以通过 DNS 名称进行访问,而无需关心具体的 Pod IP 地址。


4. 跨节点通信:

  • Service 可以将请求转发到集群中不同节点上的 Pod,实现跨节点通信。这对于分布式系统和跨节点的应用程序来说非常重要。

二、ClusterIP类型

在 Kubernetes 中,ClusterIP 类型的 Service 是最基本和默认的 Service 类型。它在集群内部为一组 Pod 提供一个稳定的 IP 地址和 DNS 名称,使得其他服务可以通过固定的网络端点进行访问,而无需关心 Pod 的动态 IP 地址。

1、ClusterIP 类型的特点和用途

1. 内部访问:

ClusterIP 类型的 Service 只能在 Kubernetes 集群内部访问,无法从集群外部直接访问。它适用于集群内部的服务通信,如微服务之间的调用。


2. 稳定的访问端点:

ClusterIP 为 Service 分配一个稳定的虚拟 IP 地址。无论背后的 Pod 如何变化,访问 Service 的 IP 地址始终不变,提供了稳定的访问端点。


3. 自动负载均衡:

ClusterIP 会将流量均匀分发到其后端的所有 Pod 上,实现负载均衡。这样可以有效地分散负载,提高应用的性能和可靠性。


2、ClusterIP 的工作机制

1. 标签选择器:

ClusterIP Service 使用标签选择器(Selector)来确定与哪些 Pod 关联。符合选择器条件的所有 Pod 会成为该 Service 的后端。


2. Endpoints 对象:

Kubernetes 会自动维护一个 Endpoints 对象,记录与 ClusterIP Service 关联的所有 Pod 的 IP 地址和端口。当关联的 Pod 状态发生变化时,Endpoints 对象会自动更新。


3. kube-proxy:

kube-proxy 是 Kubernetes 集群中的网络代理,负责实现 Service 的网络规则。对于 ClusterIP 类型的 Service,kube-proxy 会在每个 Node 上设置 iptables 规则或 IPVS 规则,将访问 ClusterIP 的流量转发到相应的 Pod 上。


http://www.hkcw.cn/article/lQZoUtxHNs.shtml

相关文章

Android studio 模拟器运行时弹窗显示The emulator process for AVD 模拟器的名字 has terminated 的解决方法

Android studio 问题解决方案 一:.运行模拟器报错展示二.解决步骤第一步:找到.android的文件夹第二步:剪切该文件到SDK的下载路径第三步:点开该文件第四步:找到配置文件第五步:编辑配置文件 三:设置环境变量…

Android Studio快速配置国内镜像源和HTTP代理

最近开始学习Android Studio开发,发现老是连接超时,下面配置下国内镜像源和HTTP代理,而且通过尝试发现最快下载速度方法 一.配置 SDK 镜像源 打开 Android Studio。 进入 File > Settings 然后点击 System Settings,点击 Android SDK。 …

mac/Windows安装python+pycharm【小白操作】

macOS通常自带Python,但建议安装最新版本的Python。你可以通过Homebrew来安装Python。 方法一:通过Homebrew安装Python 安装Homebrew(如果尚未安装): 打开终端,输入以下命令并按回车: /bin/bas…

Mac电脑安装Postman教程

Postman 是一款非常常用的 API 调试工具,支持接口测试、自动化测试等功能,本文将分享在 Mac 电脑上安装 Postman 的完整步骤。 1. 下载 Postman 安装包 方法一:官网下载 打开 Postman 官方网站:https://www.postman.com/downlo…

MySQL连接报错处理:1130-host ... is not allowed to connect to this MySql server

在MySQL安装完成后,很多开发者会遇到这样一个问题: 错误代码 1130:host xxx.xxx.xxx.xxx is not allowed to connect to this MySql server 这个错误通常出现在你尝试通过远程工具(如 Navicat、DBeaver 等)连接 MySQL …

五、单元测试-概述入门

目录 main方法测试缺点: 在pom.xm中,引入junit的依赖。,在test/java目录下,创建测试类,并编写对应的测试方法,并在方法上声明test注解。 练习:验证身份证合法性 测试成功 测试失败 main方法测试缺点&am…

Python中的None值是什么?——浅析“无”的哲学与编程智慧

在Python编程世界中,None是一个极其特殊且基础的概念。它既是一个对象,又是表达“无”与“空”的唯一标识符。它的设计和应用不仅反映了Python对“无”这一哲学问题的简洁处理方式,也蕴含着深刻的编程理念和实践智慧。 本文将深入剖析Python…

Linux正则三剑客篇

一、历史命令 history 命令 :用于输出历史上使用过的命令行数量及具体命令。通过 history 可以快速查看并回顾之前执行过的命令,方便重复操作或追溯执行过程。 !行号 :通过指定历史命令的行号来重新执行该行号对应的命令。例如,若…

配网导线自取电式视频监测装置

在现代社会,电力如同城市的血脉,支撑着生活与生产的正常运转。而电力配网系统,作为电力传输和分配的“最后一公里”,其稳定运行尤为关键。然而,复杂的配电设备、暴露的线路以及多变的外部环境(如人为施工破…

8天Python从入门到精通【itheima】-60~61

目录 60节-变量的作用域 1.局部变量 2.局部变量的代码演示 3.全局变量 4.全局变量的代码演示 5.global关键字 【1】体会局部变量和全局变量的区别 【2】global关键字:将变量直接声明为全局变量 6.小节总结 61节-第五章末尾-关于函数的综合案例-ATM机 1.案例…

Java函数式编程(上)

课程:黑马程序员Java函数式编程全套视频教程,Lambda表达式、Stream流、函数式编程一套全通关_哔哩哔哩_bilibili 函数式编程的优点: 代码简洁功能强大并行处理链式调用延迟执行 一、函数伊始 函数是一段可重复使用的代码块,用于…

Excel 批量下载PDF、批量下载考勤图片——仙盟创梦IDE

在办公场景中,借助应用软件实现 Excel 批量处理考勤图片、电子文档与 PDF,具有诸多显著优势。 从考勤图片处理来看,通过 Excel 批量操作,能快速提取图片中的考勤信息,如员工打卡时间、面部识别数据等,节省…

JavaEE: wait和notify

wait和notify(都需要搭配synchronized使用) join(),哪个线程调用这个方法,哪个线程就堵塞 wait和notify都是Object的方法,随便定义一个对象都可以使用 wait、sleep、join的区别: wait:需要搭配…

6.运算放大器—电源抑制比(五)

运放的电源抑制比(PSRR, Power Supply Rejection Ratio)是衡量其抑制电源电压波动对输出信号影响能力的重要参数。 1、PSRR定义 PSRR表示运放对电源电压变化的抑制能力,定义为: 或者 PSRR值越高,运放对电源噪声的抑制能…

【Linux网络编程】数据链路层

目录 认识以太网 以太网帧格式 认识MAC地址 认识MTU MTU对IP协议的影响 MTU对UDP协议的影响 MTU对TCP协议的影响 ARP协议 ARP协议的作用 ARP数据包的格式 ARP协议的工作流程 认识以太网 "以太网"不是一种具体的网络,而是一种技术标准&#xff1…

【BootLoader】之stm32F407实现bootloader相关问题

前言 主要是在使用f407时遇见的一些问题记录;环境是STM32F407、rt_thread 1. 乱码问题 修改system_stm32f7xx.c ,stm32f4xx_hal_conf_template.h 时钟频率 #define HSE_VALUE 8000000U 解决问题 2. 忘记了是啥问题 3. bootloader跳转失败 解决方法&a…

WSL 安装 Debian 12 后,Linux 如何安装 curl , quickjs ?

在 WSL 的 Debian 12 系统中安装 curl 非常简单,你可以直接使用 APT 包管理器从官方仓库安装。以下是详细步骤: 1. 更新软件包索引 首先确保系统的包索引是最新的: sudo apt update2. 安装 curl 执行以下命令安装 curl: sudo…

数据中台(大数据平台)之数据安全管理

数据安全管理是结合大数据技术和行业特性,数据中台产品应具备数据分类分级、敏感数据智能识别的功能,并结合敏感数据管理、数据脱敏、数据加密等安全管控方式,保障数据安全可用。 1.安全分级分类:数据分级分类是一种将不同数据按…

Linux防火墙:全面解析IPTables的表、链、规则!

iptables 防火墙用于管理包过滤和 NAT 规则。IPTables 随所有 Linux 发行版一起提供。了解如何设置和配置 iptables 将帮助您有效地管理 Linux 防火墙。 iptables 工具用于管理 Linux 防火墙规则。乍一看,iptables 可能看起来很复杂(甚至令人困惑&#…

【火山引擎 大模型批量处理数据教程-详细】

相关的文档 !!先注册账号第一步!! 批量处理文档费用接口对象存储地址提交批量处理网页 1. 准备jsonl数据集 官网网页地址样例,需要根据你自己的数据进行需改 import jsonsystem_prompt """ 你的任…