首页 > 数据库 >kubernetes-外部数据库服务映射至集群内-Service与Endpoints的关系

kubernetes-外部数据库服务映射至集群内-Service与Endpoints的关系

时间:2024-06-13 22:01:52浏览次数:39  
标签:服务 kubernetes Service 端口 集群 mysql Endpoints

创建yaml文件 配置数据库信息

kind: Service
apiVersion: v1
metadata:
  name: mysql-svc
  namespace: ops-system
spec:
  type: ClusterIP		#Kubernetes将为此服务随机分配一个集群内部的IP地址 ClusterIP 类型的服务只能在集群内部访问,提供了一个内部访问的固定 IP 地址,不对外暴露
  ports:
    - port: 3306		    #服务端口	将mysql的实际端口映射到service上的3306端口、将访问该服务port:3306 的流量转发到后端的pod端口targetPort:3306端口上
      targetPort: 3306	#pod端口	流量将被路由到后端Pod的3306端口。(定义了后端 Pods 实际监听的端口号)

      #Service定义了一个名为mysql-svc的服务,它监听在3306端口(port),并且会将流量转发到后端Pod的6379端口(targetPort)。
---
kind: Endpoints		      #Endpoints资源用于定义服务实际后端(mysql)的Pod IP地址和端口、真实的mysql ip和地址
apiVersion: v1
metadata:
  name: mysql-svc       #Endpoints 的名称是 mysql-svc,与 Service 资源的名称一致。这种名称一致性是关键,确保 Service 和 Endpoints 资源可以关联起来。
  namespace: ops-system
subsets:
  - addresses:            #addresses 指定了实际服务的 IP 地址(安装mysql的主机ip)
      - ip: 192.168.19.18	#mysql实际的ip 
    ports:
      - port: 3306			  #mysql实际的端口(定义了实际服务的端口 - 安装mysql的主机上定义访问mysql的端口) 

    #当客户端在 Kubernetes 集群内部请求 mysql-svc 服务时,Service 会将请求路由到 Endpoints 中指定的 IP 地址和端口,即 192.168.19.18:3306
---
kind: Service
apiVersion: v1
metadata:
  name: redis-svc
  namespace: ops-system
spec:
  type: ClusterIP
  ports:
    - port: 6379
      targetPort: 6379
---
kind: Endpoints
apiVersion: v1
metadata:
  name: redis-svc
  namespace: ops-system
subsets:
  - addresses:
      - ip: 192.168.19.206
    ports:
      - port: 6379
---
kind: Service
apiVersion: v1
metadata:
  name: doris-svc
  namespace: ops-system
spec:
  type: ClusterIP
  ports:
    - port: 9030
      targetPort: 9030
---
kind: Endpoints
apiVersion: v1
metadata:
  name: doris-svc
  namespace: ops-system
subsets:
  - addresses:
      - ip: 192.168.19.17
    ports:
      - port: 6030

 

总结

# 关键点总结
# 1、Service 和 Endpoints 关联: 通过相同的名称 mysql-svc 将 Service 与 Endpoints 关联起来,Service 会将请求转发到 Endpoints 中定义的 IP 地址和端口。

# 2、集群内服务访问: 使用 ClusterIP 类型的 Service,在集群内部提供一个固定的 IP 地址和服务名称,以便其他 Pods 可以稳定地访问该服务。

# 3、外部服务整合: 可以将集群外部的服务(如 Redis)整合到 Kubernetes 内部,使得集群内的应用能够统一方式访问外部服务。

# 4、这个配置非常有助于将外部的服务引入 Kubernetes 集群,使得集群内的应用可以以一种统一的方式进行访问和管理,提升系统的可维护性和灵活性。

# 5、在 Kubernetes 中,Service 用于将集群内的网络请求路由到一组 Pods 或特定的 IP 地址和端口

 

聊聊 Service 的ip和端口

# 1、 ClusterIP 是 Kubernetes 中最常用的 Service 类型,它为服务提供一个集群内可达的 IP 地址。这是一个虚拟 IP,用于转发集群内的请求。
# 2、ClusterIP 是一个虚拟 IP,不直接绑定到任何 Pod 或容器的 IP 上。它是集群内部的一个固定地址,服务通过该地址在集群内被访问、说明ClusterIP是游离在集群中的、当集群中有服务要访问时、ClusterIP就去找到相应的Service
# 3、Service 定义的 port 是对外暴露的端口,targetPort 则是 Pods 内部实际使用的端口。Service 会将请求从 ClusterIP 的 port 转发到目标容器的 targetPort
如:
spec:
  ports:
  - port: 6379         # 对外暴露的端口
    targetPort: 6380   # 容器内部的端口
#当访问 ClusterIP 的 6379 端口时,请求会被转发到目标 Pods 内部的 6380 端口

# 4、Service 通过标签选择器或者其它属性(pod名)选择一组 Pods 或通过 Endpoints 定义实际的 IP 和端口,将请求路由到目标服务。
# 5、Kubernetes Service 提供了一种高效的负载均衡和服务发现机制,使得请求可以被动态地路由到合适的目标服务,提升了集群服务的灵活性和可用性。

 

聊聊 Endpoints 的IP和端口

#到这里应该大概都了解endpoints的作用了
#可以用一句话概括:endpoints其实就是后端服务(如mysql服务)的代理、通过endpoints代理的服务可以被集群内的服务访问(当然是通过service来访问的)

 

标签:服务,kubernetes,Service,端口,集群,mysql,Endpoints
From: https://www.cnblogs.com/littlecc/p/18246845

相关文章

  • kubernetes-ingress-nginx-rule的配置-将外部流量路由到集群内部的规则配置
    KubernetesIngress资源配置文件主要定义了如何通过NGINXIngress控制器来处理进入集群的HTTP/HTTPS流量apiVersion:networking.k8s.io/v1#表示这是一个Ingress资源,并使用了Kubernetes网络APIv1版本kind:Ingress#kind:定义了资源的类型。在这里是Ingr......
  • Windows Server 2012 R2部署网站后IIS,只要访问网址应用程序池就自动停止,浏览器页面提
     解决方案:1.查看windows日志通过文件资源管理器查看:打开文件资源管理器,找到“我的电脑”。右键点击“管理”。在弹出的窗口中,点击“事件查看器”。在事件查看器中,点击“Windows日志”即可查看各种日志信息 2.找到错误信息......
  • monaco-editor 的 Language Services
    我们是袋鼠云数栈UED团队,致力于打造优秀的一站式数据中台产品。我们始终保持工匠精神,探索前端道路,为社区积累并传播经验价值。本文作者:修能这是一段平平无奇的SQL语法SELECTid,sum(name)FROMstudentGROUPBYidORDERBYid;如果把这段代码放到monaco-editor(@......
  • 微服务实践之使用 kube-vip 搭建高可用 Kubernetes 集群
    实验环境原理生成kube-vip静态pod配置清单exportVIP=192.168.215.200#我的vip是192.168.215.200exportINTERFACE=ens33#可以用ipa查看接口名称#kube-vip最新镜像为v0.8.0,但我装时无法成功,后来降到v0.7.2后安装成功了ctrimagepulldocker.io/plndr/kube-vip:v0......
  • kubernetes网络概念、关系
    kubernetes实现了对容器的编排,实际上就是对计算、网络、存储的编排。在网络部分,涉及到的概念或者模块有三个:kube-proxy:本质上讲就是Service资源的实现kube-proxypod运行在每个kubernetes节点中,通过iptables或者ipvs的方式实现service到pod-endpoint的负载均衡能力。ipvs......
  • 【Service Fabric】Service Fabric删不掉的问题
    问题描述在使用ServiceFabric服务后,想删除资源。却遇见无法删除的问题。在查看错误消息中,看见把中文的资源组名称转换为乱码了,十分怀疑是中文字符无法识别的原因。日志中的资源信息: /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/龦啊阿丏丄丅3狧埃挨......
  • 使用 KubeKey v3.1.1 离线部署原生 Kubernetes v1.28.8 实战
    今天,我将为大家实战演示,如何基于操作系统openEuler22.03LTSSP3,利用KubeKey制作Kubernetes离线安装包,并实战离线部署Kubernetesv1.28.8集群。实战服务器配置(架构1:1复刻小规模生产环境,配置略有不同)主机名IPCPU内存系统盘数据盘用途ksp-control-11......
  • 云原生Kubernetes系列项目实战-k8s集群+高可用负载均衡层+防火墙
    一、Kubernetes区域可采用Kubeadm方式进行安装:名称主机部署服务master192.168.91.10docker、kubeadm、kubelet、kubectl、flannelnode01192.168.91.11docker、kubeadm、kubelet、kubectl、flannelnode02192.168.91.20docker、kubeadm、kubelet、kubectl、flannel1.系统初......
  • 【K8s】专题五(1):Kubernetes 配置之 ConfigMap
    以下内容均来自个人笔记并重新梳理,如有错误欢迎指正!如果对您有帮助,烦请点赞、关注、转发!欢迎扫码关注个人公众号!目录一、基本介绍二、主要特性三、资源清单(示例)四、常用操作一、基本介绍在Kubernetes中,ConfigMap是一种用于存储非敏感信息的资源对象,提供了向Pod......
  • 借助ServiceDesk Plus,更接近ISO 27001变更管理标准
    如果实施不当,变更支持可能会中断业务流程并导致停机。许多组织尚未建立不同的阶段来记录整个变更过程。这通常会导致IT环境,在这种环境中,实施变更的成功依赖于单个主题专家。这并不高效,并且对IT团队来说可能难以管理和压力。 让我们看看Zylker的IT部门,该部门开发了一个新......