首页 > 其他分享 >Kubernetes--服务发现方式

Kubernetes--服务发现方式

时间:2022-10-04 20:57:26浏览次数:47  
标签:服务 Kubernetes Service -- svc cluster Pod local 环境变量

服务发现方式:环境变量

创建Pod资源时,kubelet会将其所属名称空间内的每个活动的Service对象以一系列环境变量的形式注入其中。它会支持使用Kubernetes Service环境变量以及与Docker的links兼容的变量。

(1)Kubernetes Service环境变量

Kubernetes Service为每个Service资源生成包括以下形式的环境变量在内的一系列环境变量,在同一名称空间中创建的Pod对象都会自动拥有这些变量。

  • {SVCNAME}_SERVICE_HOST
  • {SVCNAME}_SERVICE_PORT

注意:如果SERVICE中使用了连接线,那么Kubernetes会在定义为环境变量时将其转换为下划线。

(2)Docker Link形式的环境变量

Docker使用 --Link选项是实现容器连接时所设置的环境变量形式,具体使用形式请参考Docker的相关文档。在创建Pod对象时,Kubernetes也会将于此形式兼容的一系列环境变量注入Pod对象中。

例如,在Service资源myapp-svc创建后创建的Pod对象中查看可用的环境变量,其中以MYAPP_SVC_SERVICE开头的表示Kubernetes Service环境变量,名称中不包含“SERVICE”字符串的环境变量为Docker Link形式的环境变量:


/ # printenv | grep MYAPP
MYAPP_SVC_PORT_80_TCP_ADDR=10.108.17.20
MYAPP_SVC_PORT_80_TCP_PORT=80
MYAPP_SVC_PORT_80_TCP_PROTO=tcp
MYAPP_SVC_PORT_80_TCP=tcp://10.108.17.20:80
MYAPP_SVC_SERVICE_HOST=10.108.17.20
MYAPP_SVC_PORT=tcp://10.108.17.20:80
MYAPP_SVC_SERVICE_PORT=80
/ # 

基于环境变量的服务发现其功能简单、易用,但存在一定的局限,例如,仅有那些与创建的Pod对象在同一名称空间中且事先存在的Service对象的信息才会以环境变量的形式注入,那些处于非同一名称空间,或者是在Pod资源创建之后才创建的Service对象的相关环境变量则不会被添加。幸而,基于DNS的发现机制并不存在此类限制。

服务发现方式:DNS

创建Service资源对象时,ClusterDNS会为它自动创建资源记录用于名称解析和服务注册,于是,Pod资源可直接使用标准的DNS名称来访问这些Service资源。每个Service对象相关的DNS记录包含如下两个:

  • {SVCNAME}.{NAMESPACE}.{CLUSTER_DOMAIN}
  • {SVCNAME}.{NAMESPACE}.svc.{CLUSTER_DOMAIN}

另外,“--cluster-dns”指定了集群DNS服务的工作地址,“--cluster-domain”定义了集群使用的本地域名,因此,系统初始化时默认会将“cluster.local.”和主机所在的域“ilinux.io.”作为Dns的本地域使用。例如,在此前创建的用于交互式Pod资源的客户端中查看其配置,命令如下:

/ # cat /etc//resolv.conf 
nameserver 10.96.0.10
search default.svc.cluster.local svc.cluster.local cluster.local
options ndots:5
/ # 

上述search参数中指定的DNS各搜索域,是以次序指定的几个域名后缀,具体如下所示。

  • {NAMESPACE}.svc.{CLUSTER_DOMAIN}:如default.svc.sluster.local。
  • svc.{CLUSTER_DOMAIN}:如svc.cluster.local。
  • {CLUSTER_DOMAIN}:如cluster.local。
  • {WORK_NODE_DOMAIN}:如ilinux.io。

例如,在此之前创建的用于交互式Pod客户端中尝试请求解析myapp-svc的相关DNS记录:


/ # nslookup myapp-svc.default
Server:        10.96.0.10
Address 1:    10.96.0.10 kube-dns.kube-system.svc.cluster.local

Name:           myapp-svc
Assress 1:      10.107.208.93 myapp-svc.default.svc.cluster.local
解析时,“myapp-svc”服务名称的搜索次序依次是default.svc.cluster.local、svc.cluster.local、cluster.local和ilinux.io,因此基于DNS的服务发现不受Service资源所咋的名称空间和创建时间的限制。上面的解析结果也正是默认的default名称空间中创建的myapp-svc服务的IP地址。

标签:服务,Kubernetes,Service,--,svc,cluster,Pod,local,环境变量
From: https://www.cnblogs.com/zhangxin9/p/16754434.html

相关文章

  • css 定位
     <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"con......
  • P4040保龄球(9.26)
    题面:戳这里题意概括:有一种叫做保龄球的运动,它有以下几种规则①每一回合都分上下两轮,每轮都能投回球,每回都能打中一定数量的木瓶②每一回合的得分为当前这个回合的得分......
  • P3528 PAT-Sticks(2022.10.2)
    题目描述:戳这里题目大意:①给你k种颜色木棍,每种木棍个数不一样。②找出三根颜色不一样的木棍组成三角形。③如果可以输出方案,不能输出"NIE"。思路:遇事不决先看数据范......
  • 缺省源
    用的舒服/*/>フ|__|/`ミ_x彡/|/ヽ?/ ̄|||||( ̄ヽ__ヽ_)_)\二つ*/#inc......
  • 性能测试中MySQL数据库慢查询使用方法【杭州多测师】【杭州多测师_王sir】
    MYSQL慢查询使用方法MYSQL慢查询介绍分析MySQL语句查询性能的问题时候,可以在MySQL记录中查询超过指定时间的语句,我们将超过指定时间的SQL语句查询称为“慢查询......
  • 欧拉函数的power
    在算数基本定理中有$N=p_{1}^{a1}p_{2}^{a2}p_{3}^{a3}.....p_{k}^{ak}$wuw在y总的课中是用了容斥原理进行推导得到了$\phi(x)=N*(1-\frac{1}{p1})*......
  • 基本语法
    输入输出输入:输出:字符串:System.out.println("helloworld!");字符串+数值System.out.println("a="+8);importjava.util.Scanner;//Scanner是一个简单......
  • 基于股指的美团抽奖规则
    美团抽奖规则:每日收盘时的上证指数×每日收盘时的深证成指×10000=12位数。(指数以证交所公布数字为准);将此12位数的数字倒序排列后(如首位是0,则直接抹去),再除以前一日2......
  • C++ separation compile multiple files into object files via g++ -c
    1.Theprojectstructureasbelow  TheModelfolderandmaincppfile.2.CompilethefilesinModelfolderviag++-casbelowandgenerate*.o objectf......
  • AtCoder Regular Contest 149
    A发现所有数字都相同的数一共只有\(10^6\)种,考虑枚举每种情况,关键在于如何判断一个数\(\bmodm\)是否为\(0\)。考虑\(9\bmod8=1\),而\(99\bmod8=(9\times10+9)\b......