首页 > 其他分享 >k8s03 K8S的服务发现

k8s03 K8S的服务发现

时间:2023-01-31 20:57:25浏览次数:41  
标签:服务 Service Worker 访问 集群 Pod K8S k8s03

K8S 的访问情况大致有分为3种

  • 1、集群内部互访,PodA -> PodB
  • 2、集群内部访问集群外部 PodA->外部 MySQL
  • 3、集群外部访问集群内部

分情况说明方案:

1、集群内部互访

  • 方案1:每个 Pod 都会被分配一个 ClusterIP,Pod 之间可以通过 IP 直接访问,但 Pod 重启后,IP 会变化,并且无法对 PodB 多个服务同时访问
  • 方案2:DNS+ClusterIP利用 K8S 的 DNS 和 Service,将 PodB 处理为 Service,例如叫做 SerB,此时 PodA 可直接访问 SerB 来实现访问,K8S 的 DNS 会将 SerB 解析到对应的 IP, 并实现负载均衡
  • 方案3:HeadlessService, 返回Pod列表,PodA拿到Pod列表后,自己进行负载均衡和其他的处理

2、集群内部访问集群外部

  • 2.1:直接访问外部服务的 IP 和端口
  • 2.2:通过 Service, 定义一个 ServiceMySQL,然后定义一个相同的 Endpoint ServiceMysql, Endpoint 中定义的是外部服务的具体地址,K8S 的 DNS 此时会将 ServiceMysql 解析到 Endpoint地址,外部 MySQL 地址如果有变化,修改 Endpoint 地址即可,对于客户端来说,跟访问内部 Service 没有区别

3、集群外部服务访问集群内部的服务

  • 3.1 NodePort: Service 的一种类型,除了 cluseterIP 之外,会在每个 Worker 节点上暴露一个端口,若节点上没有运行内部Pod服务,NodePort 会将请求终转发会运行Pod服务的Worker节点去,NodePort 方式不太推荐
  • 3.2 HostPort: Service 的另一种类型,只会在运行了 Pod 的 Worker 上启动端口,客户端必须访问指定的Worker的端口,访问其他的Worker不行
  • 3.3 Ingress: Service 的另一种类型,Ingress 需要配置一下内容:
    • 域名
    • 域名的请求的路径
    • 这个请求转发到的 Service 名称
    • 最后由 IngressController 完成域名和请求的转发

标签:服务,Service,Worker,访问,集群,Pod,K8S,k8s03
From: https://www.cnblogs.com/unchch/p/17080727.html

相关文章