k8s之服务发现

Posted 阳台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了k8s之服务发现相关的知识,希望对你有一定的参考价值。

一、概述

  k8s中支持两种服务发现方法: 环境变量和DNS

二、环境变量

  当Pod被创建的时候,k8s将为Pod设置每一个Service的相关环境变量,这些环境变量包括两种类型:

  • k8s Service环境变量:

    k8s为Service设置的环境变量形式, 包括:

    • {SVCNAME}_SERVICE_HOST
    • {SVCNAME}_SERVICE_PORT
    • {SVCNAME}_SERVICE_PORT_{PORTNAME}

    其中的服务名和端口名转为大写,连字符转换为下划线。

  • Docker Link环境变量:

    相当于通过 Docker 的--link 参数实现容器连接时设置的环境变量形式; 

三、DNS

   DNS服务发现需要k8s提供 Cluster DNS支持,Cluster DNS会监控k8s API,为每一个Service创建DNS记录用于域名解析,这样在Pod中可以通过DNS域名获取Service的访问地址。而对于一个Service, Cluster DNS会创建两条DNS记录:

  • [service_name].[namespace_name].[cluster_domain]
  • [service_name].[namespace_name].svc.[cluster_domain] 

 

以上是关于k8s之服务发现的主要内容,如果未能解决你的问题,请参考以下文章

k8s实战之Service

nacos与k8s 服务注册与发现

K8s服务发现机制

k8s 服务发现 以及 gRPC 长连接负载均衡

K8s基于DNS的服务发现(转)

基于k8s环境的spring-cloud服务发现和调用配置