当前位置: 首页 > 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

本实验到此结束!

相关文章:

  • QT使用WxSQLite3打开加密数据库并查询
  • Django CMS 的 Demo
  • Qt多线程访问同一个数据库源码分享(基于Sqlite实现)
  • 更新版【飞云翻倍系统】新增支撑压力多线参考技术,操盘技术图文解说
  • 4.2 HarmonyOS NEXT分布式AI应用实践:联邦学习、跨设备协作与个性化推荐实战
  • Struts2漏洞由浅入深
  • AIGC图像去噪:核心原理、算法实现与深度学习模型详解
  • Rocketmq消息队列 消息模型 详解
  • [论文阅读] 人工智能+软件工程 | MemFL:给大模型装上“项目记忆”,让软件故障定位又快又准
  • 在 Ubuntu 24.04 LTS 上安装 Jenkins 并配置全局工具(Git、JDK、Maven)
  • 探秘半导体制造设备钢结构防震基座的承重奥秘-江苏泊苏系统集成有限公司
  • 好得睐:以品质守味、以科技筑基,传递便捷与品质
  • vue-18(使用 Vuex 插件实现高级功能)
  • 51单片机基础部分——独立按键检测
  • 用 n8n 提取静态网页内容:从 HTTP Request 到 HTML 节点全解析
  • JavaSec-SSTI - 模板引擎注入
  • 【Linux网络篇】:从HTTP到HTTPS协议---加密原理升级与安全机制的全面解析
  • vscode 离线安装第三方库跳转库
  • Spark 写文件
  • 记一个判决书查询API接口的开发文档
  • 国外哪些网站做产品推广比较好/免费引流在线推广
  • 网站建设项目分期/seo外包 靠谱
  • 专业企业网站建设哪家服务好/seo 优化一般包括哪些内容
  • 有九类商标可以做网站名吗/做网站需要什么条件
  • 制作网站接单/58精准推广点击器
  • 个人网站设计成首页/运营培训