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

初探Service服务发现机制

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.xdnf.cn/news/882901.html

相关文章:

  • 缓解停车难:4G地磁如何重构车位分配?
  • 前端开发面试题总结-CSS篇
  • 第11期_网站搭建_极简云 单码网络验证修复版本 虚拟主机搭建笔记
  • Linux下如何使用shell脚本导出elasticsearch中某一个index的数据为本地csv文件
  • SQL Server 2025 预览版新功能
  • 深入解析与解决方案:处理Elasticsearch中all found copies are either stale or corrupt未分配分片问题
  • minio入门学习
  • 探索未知惊喜,盲盒抽卡机小程序系统开发新启航
  • 【图像处理入门】5. 形态学处理:腐蚀、膨胀与图像的形状雕琢
  • 作为过来人,浅谈一下高考、考研、读博
  • Neovim - 常用插件,提升体验(三)
  • 2024年09月 C/C++(六级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • 八:操作系统设备管理之缓冲、缓存与假脱机
  • PHP文件读取漏洞全面剖析:触发点与利用技术
  • SpringBoot项目移动之后无法运行
  • PPT转图片拼贴工具 v1.0
  • k8S 命令
  • Java原型模式深度解析:高效对象复制的艺术与实践
  • windows10 php报错
  • Vue 中组件命名与引用
  • DJango项目
  • uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖
  • 苹果“Findmy”功能正式在韩国启用,结束多年缺席局面
  • 【学习笔记】MIME
  • 【Git系列】如何同步原始仓库的更新到你的fork仓库?
  • 【数据结构】5. 双向链表
  • 老年生活照护实训室建设规划:照护质量评估与持续改进实训体系
  • 2025前端微服务 - 无界 的实战应用
  • 机器学习与深度学习12-K近邻算法
  • C++虚函数表(虚表Virtual Table,简称vtable、VFT)(编译器为支持运行时多态(动态绑定)而自动生成的一种内部数据结构)虚函数指针vptr