k8s应用[pod]内网域名
内网域名解析
内网域名解析,顾名思义是通过内网的DNS服务器在局域网内做域名解析。
内网域名解析的好处:
1、较高的性能和较低的延迟;
2、能够有效地防范外部攻击,解决劫持问题。
原因也很简单,就是数据包在网络设备上传输的路径短了。 另外内网的网络质量是可控的,大多数情况下都比外网好些,即使不好也可以低成本地换个比较好的设备来解决。
K8s应用的内网域名是由K8s集群内部的域名解析资源来进行解析的,整个过程都在K8s集群内。 应用间的调用使用内网域名可以明显提升数据传输的速度,减少因为网络抖动造成报错的可能性。这也是今天总结K8s应用内网域名的原因。
K8s集群内是使用全限定域名【FQDN】连接服务的。
FQDN(Fully Qualified Domain Name)全限定域名: 同时带有主机名和域名的名称。
这个全限定域名由三部分组成:应用在K8s中定义的服务名,应用在K8s集团中的命名空间,集群本地服务名称中使用的可配置集群域后缀。
apiVersion: v1
kind: Service
metadata:
name: daemon-uat-chaojihao-com #服务名
namespace: ltc #命名空间
spec:
type: ClusterIP
ports:
- port: 80
targetPort: 80
protocol: TCP
name: http
selector:
app: daemon-uat-chaojihao-com #服务的选择器名,建议与服务名保持一致
所有的K8s应用都有YAML定义文件。如果没有找到,譬如丢了,或者直接kubectl命令创建,可以使用这个命令来查看
kubectl get service 服务名 -n 命名空间名 - o yaml #查看service类型的应用yaml定义
kubectl get pod 服务名 -n 命名空间名 - o yaml #查看pod类型的应用yaml定义
上面这个Service定义YAML对应的内网域名就是:daemon-uat-chaojihao-com.ltc.svc.cluster.local
服务名[metadata.name]:daemon-uat-chaojihao-com
命名空间[metadata.namespace]:ltc 。同一个命名空间内应用间相互调用时,命名空间可以省略。建议加上
集群本地服务名称中使用的可配置集群域后缀:svc.cluster.local 。同一个集群内可以省略。建议加上
应用单访问时需要加上商品号还有schema,譬如
http://daemon-uat-chaojihao-com.ltc.svc.cluster.local:80
端口80不能少
这种内网域名是ping不通的