6.2.5 服务发现

  定义:

Kubernetes 服务发现是指在 Kubernetes 集群中,一个服务(Service)能够找到并访问其他服务或 Pod 的过程。

一、服务发现的机制

Kubernetes 服务发现的核心机制依赖于以下几个组件:

  1. API Server:提供 RESTful API,集群中所有对象资源的增删改查和监听操作都通过 API Server 处理,并存储在 etcd 中。
  2. etcd:分布式键值存储系统,用于保存集群状态数据,包括 Pod、Service 等对象信息。
  3. kube-proxy:在每个 Node 节点上实现 Pod 网络代理,维护网络规则和四层负载均衡工作。
  4. kube-dns/CoreDNS:提供集群内部的 DNS 服务,将 Service 名称解析为对应的 IP 地址。

二、服务发现的方法:

 1、环境变量

  • 当 Pod 运行时,kubelet 会为每个活跃的 Service 添加一组环境变量,其中包含服务的 IP 和端口信息。
  • 环境变量的命名规则为 {SVCNAME}_SERVICE_HOST 和 {SVCNAME}_SERVICE_PORT,其中 SVCNAME 是 Service 的名称(大写,横线转为下划线)。
  • 这种方法简单、易用,但存在局限性,如只能注入与 Pod 在同一命名空间且事先存在的 Service 的信息

 2、DNS

  • Kubernetes 使用 kube-dns 或 CoreDNS 提供基于 DNS 的服务发现。
  • 每个 Service 在创建时都会被分配一个 DNS 名称,格式为 <service>.<ns>.svc.<zone>,其中 service 是 Service 的名称,ns 是命名空间,zone 是集群的域名(默认为 cluster.local.)。
  • 客户端可以通过 Service 的 DNS 名称进行服务发现,DNS 服务器会将其解析为对应的 IP 地址。
  • DNS 方法更灵活,支持跨命名空间的服务发现,且随着 Service 的变化自动更新 DNS 记录。

  

(以上摘自文心一言)

 

posted @   ~技术小白  阅读(10)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端
点击右上角即可分享
微信分享提示