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] 

 

posted on 2017-08-18 18:48  阳台  阅读(1338)  评论(0编辑  收藏  举报

导航