初探Service服务发现机制

news2025/6/14 13:48:45

1.Service简介

Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。

主要功能:服务发现负载均衡

 

 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型

2.Endpoints简介

Endpoints是一种Kubernetes资源,用来记录一个Service对应的所有健康且就绪Pod的访问地址

包括Pod 的 IP 和端口列表。

Endpoints实际上是Service后端的可访问Pod端点集合,其中的Pod必须处于运行状态。

3.实验基础和前置条件

本实验以Kubernetes集群环境搭建与初始化_集群初始化-CSDN博客为基础和前置条件。

4.Service的负载均衡机制

4.1kube-proxy的代理模式

4.1.1iptables代理模式

4.1.2 IPVS代理模式

4.2 负载均衡策略

(1)、轮询(round-robin,rr)

(2)、最少连接(least connection,lc)

(3)、目标哈希(destination hashing,dh)

(4)、源哈希(source hashing,sh)

(5)、预计延迟时间最短(shortest expected delay)

(6)、从不排队(never queue,nq)

 4.3会话保持

首次将某个客户端来源的IP发起的请求转发到后端的某个Pod,之后来自该IP的请求都将转发到该Pod。

5.通过Endpoints理解Service的工作机制

5.1创建定义Deployment对象的配置文件

创建Deployment对象的配置文件nginx-deploy.yaml 。

5.2 基于上述YAML文件创建Deployment对象

基于上述配置文件nginx-deploy.yaml创建Deployment对象,具体命令如下所示。

kubectl apply -f ch05/nginx-deploy.yaml

5.3 创建定义Service对象的配置文件

创建service对象的配置文件nginx-service.yaml

5.4 基于上述YAML文件创建service对象

基于上述配置文件nginx-service.yaml创建service对象

kubectl create -f ch05/nginx-service.yaml

5.5 查看该Service对象的ClusterIP地址和Service端口

执行以下命令,查看该Service对象的ClusterIP地址和Service端口。

kubectl get service nginx-svc 

5.6 通过ClusterIP地址和Service端口进行访问

执行以下命令,测试通过ClusterIP地址和Service端口访问后端Pod承载的应用程序。

curl 10.104.123.96:8080 

5.7 查看Endpoints对象列表

执行以下命令,查看Endpoints对象列表。

kubectl get endpoints

5.8 删除Service和Deployment

执行以下命令,删除我们创建的Service和Deployment对象,以恢复实验环境。

kubectl delete -f ch05/nginx-service.yaml
kubectl delete -f ch05/nginx-deploy.yaml

6.验证Service服务发现机制

6.1创建同时包含Deployment和Service的资源定义文件

创建同时包含Deployment和Service的资源定义文件nginx-deploy-service.yaml 。

 

6.2 基于上述YAML文件创建Deployment和Service对象

基于上述配置文件nginx-deploy-service.yaml创建Deployment和Service对象,具体命令如下所示。

kubectl apply -f ch05/nginx-deploy-service.yaml

6.3 验证基于环境变量的服务发现机制

6.3.1基于tomcat:8.0-alpine镜像创建一个Pod

执行以下命令,基于tomcat:8.0-alpine镜像创建并运行一个Pod。

kubectl run tomcat --image=tomcat:8.0-alpine

 执行以下命令,查看Pod运行情况

kubectl get pods

6.3.2 查看Pod的环境变量

执行以下命令,列出该Pod的环境变量,并筛选出包含NGINX的环境变量。

kubectl exec tomcat -- printenv | grep NGINX

6.3.3 恢复实验环境

执行以下命令,为了恢复实验环境,删除我们所创建的Pod对象tomcat。

kubectl delete pod tomcat

6.4验证基于 DNS 的服务发现机制

6.4.1基于busybox:latest镜像创建一个Pod

执行以下命令,运行一个基于busybox:latest镜像的Pod,并进入交互式伪终端。

kubectl run mybusybox --image=busybox:latest -i --tty

6.4.2 DNS域名解析验证

通过交互式伪终端,在Pod内部执行以下命令,进行DNS域名解析验证。

nslookup nginx-svc

 通过交互式伪终端,在Pod内部执行以下命令,通过域名进行下载和访问。

wget nginx-svc.default.svc.cluster.local:8080
cat index.html

6.4.3 恢复实验环境

执行以下命令,为了恢复实验环境,删除我们所创建的Pod对象mybusybox。

kubectl delete pod mybusybox

本实验到此结束!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2407315.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JVM虚拟机:内存结构、垃圾回收、性能优化

1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP

编辑-虚拟网络编辑器-更改设置 选择桥接模式,然后找到相应的网卡(可以查看自己本机的网络连接) windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置,选择刚才配置的桥接模式 静态ip设置: 我用的ubuntu24桌…

浪潮交换机配置track检测实现高速公路收费网络主备切换NQA

浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek

文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合

在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…

Mysql中select查询语句的执行过程

目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析(Parser) 2.4、执行sql 1. 预处理(Preprocessor) 2. 查询优化器(Optimizer) 3. 执行器…

视觉slam十四讲实践部分记录——ch2、ch3

ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…

基于 TAPD 进行项目管理

起因 自己写了个小工具,仓库用的Github。之前在用markdown进行需求管理,现在随着功能的增加,感觉有点难以管理了,所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD,需要提供一个企业名新建一个项目&#…

JVM 内存结构 详解

内存结构 运行时数据区: Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器: ​ 线程私有,程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 ​ 每个线程都有一个程序计数…

CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)

漏洞概览 漏洞名称:Apache Flink REST API 任意文件读取漏洞CVE编号:CVE-2020-17519CVSS评分:7.5影响版本:Apache Flink 1.11.0、1.11.1、1.11.2修复版本:≥ 1.11.3 或 ≥ 1.12.0漏洞类型:路径遍历&#x…

嵌入式学习笔记DAY33(网络编程——TCP)

一、网络架构 C/S (client/server 客户端/服务器):由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序,负责提供用户界面和交互逻辑 ,接收用户输入,向服务器发送请求,并展示服务…

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖

在Vuzix M400 AR智能眼镜的助力下,卢森堡罗伯特舒曼医院(the Robert Schuman Hospitals, HRS)凭借在无菌制剂生产流程中引入增强现实技术(AR)创新项目,荣获了2024年6月7日由卢森堡医院药剂师协会&#xff0…

【VLNs篇】07:NavRL—在动态环境中学习安全飞行

项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战,克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…

R语言速释制剂QBD解决方案之三

本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…

基于Java+MySQL实现(GUI)客户管理系统

客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息,对客户进行统一管理,可以把所有客户信息录入系统,进行维护和统计功能。可通过文件的方式保存相关录入数据,对…

springboot整合VUE之在线教育管理系统简介

可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…

算法:模拟

1.替换所有的问号 1576. 替换所有的问号 - 力扣(LeetCode) ​遍历字符串​:通过外层循环逐一检查每个字符。​遇到 ? 时处理​: 内层循环遍历小写字母(a 到 z)。对每个字母检查是否满足: ​与…

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf

FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…

Linux 内存管理实战精讲:核心原理与面试常考点全解析

Linux 内存管理实战精讲:核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用,还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…

Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战

说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下,风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…