当前位置: 首页 > 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.lqws.cn/news/152011.html

相关文章:

  • 基础线性代数
  • 文档处理组件Aspose.Words 25.5全新发布 :六大新功能与性能深度优化
  • Python实现markdown文件转word
  • 【react+antd+vite】优雅的引入svg和阿里巴巴图标
  • Java在word中指定位置插入图片。
  • npm run dev 报错:Error: error:0308010C:digital envelope routines::unsupported
  • Flash烧录速度和加载配置速度(纯FPGA ZYNQ)
  • 使用ReactNative加载Svga动画支持三端【Android/IOS/Harmony】
  • FPGA 的硬件结构
  • 70年使用权的IntelliJ IDEA Ultimate安装教程
  • android 之 Tombstone
  • SSH/RDP无法远程连接?腾讯云CVM及通用服务器连接失败原因与超全排查指南
  • Mysql 身份认证绕过漏洞 CVE-2012-2122
  • 如何利用Elastic Stack(ELK)进行安全日志分析
  • 关于easyexcel动态下拉选问题处理
  • 大模型微调技术全景图:从全量更新到参数高效适配
  • 三表查询SQL怎么写?----小白初学+案例引入
  • SQL SERVER中获取外部数据的两种方法!
  • Postgresql常用函数操作
  • Flask-SQLAlchemy使用小结
  • AppWeb
  • JavaSec-XSS
  • 如何防止看板任务长期停滞不前
  • Ubuntu中常用的网络命令指南
  • html文字红色粗体,闪烁渐变动画效果
  • 在Spring Boot 3.3中使用Druid数据源及其监控功能
  • 分析vban的utlis中的helper方法(1)——数组
  • Linux-07 ubuntu 的 chrome 启动不了
  • Ubuntu ifconfig 查不到ens33网卡
  • 【Android基础回顾】三:Android启动流程