内网域名解析
内网域名解析,顾名思义是通过内网的DNS服务器在局域网内做域名解析。
内网域名解析的好处:
1、较高的性能和较低的延迟;
2、能够有效地防范外部攻击,解决劫持问题。
原因也很简单,就是数据包在网络设备上传输的路径短了。 另外内网的网络质量是可控的,大多数情况下都比外网好些,即使不好也很容易换个比较好的设备来解决。
如何确定K8s应用的内网域名
K8s应用的内网域名是由K8s集群内部的域名解析服务来进行解析的,整个过程都在K8s集群内。
K8s集群内是使用全限定域名【FQDN】发现服务、连接服务、互相访问的。
具体来说就是kind为Service的K8s资源。
FQDN(Fully Qualified Domain Name)全限定域名: 同时带有主机名和域名的名称。 全限定域名可以从逻辑上准确地表示出主机在什么地方,也可以说全域名是主机名的一种完全表示形式。
K8s中应用的全限定域名由三部分组成:
1、应用在K8s中定义的服务名
2、应用在K8s集群中的命名空间
3、集群本地服务名称中使用的可配置集群域后缀。
示例:
一个Service的YAML定义文件。Service服务的位置见上图
上面这个Service定义YAML对应的内网域名就是: daemon-uat-chaojihao-com.ltc.svc.cluster.local
服务名[metadata.name]:daemon-uat-chaojihao-com 命名空间[metadata.namespace]:ltc 。同一个命名空间内应用间相互调用时,命名空间可以省略。建议加上 集群本地服务名称中使用的可配置集群域后缀:svc.cluster.local 。同一个集群内可以省略。建议加上
应用间访问时需要加上端口号,还有schema。 eg: http://daemon-uat-chaojihao-com.ltc.svc.cluster.local:80 端口80不能少。 另外,应用的K8s内网域名是ping不通的
小技巧:
所有的K8s应用都有YAML定义文件。如果没有找到,譬如丢了,或者直接kubectl命令创建,可以使用以下命令来查看:
kubectl get service 服务名 -n 命名空间名 - o yaml #查看service类型的应用yaml定义
kubectl get pod 服务名 -n 命名空间名 - o yaml #查看pod类型的应用yaml定义