K8S headless service服务详解

一、headless和ClusterIP的区别

CoreDNS的作用:在K8S里,我们想要通过name来访问服务的方式就是在Deployment上面添加一层Service,这样我们就可以通过Service name来访问服务了,那其中的原理就是和CoreDNS有关,它将Service name解析成Cluster IP,

这样我们访问Cluster IP的时候就通过Cluster IP作负载均衡,把流量分布到各个POD上面

K8s中资源的全局FQDN格式:
  Service_NAME.NameSpace_NAME.Domain.LTD.
  Domain.LTD.=svc.cluster.local.     #这是默认k8s集群的域名。

1、clusterip举例

ClusterIP的原理:一个Service可能对应多个EndPoint(Pod)client访问的是Cluster IP,通过iptables规则转到Real Server,从而达到负载均衡的效果

 

备注: 从上面的结果中我们可以看到虽然Service有2个endpoint,但是dns查询时只会返回Service的地址。

           具体client访问的是哪个Real Server,是由iptables来决定的

2、headless举例

 

 解释:dns查询会如实的返回2个真实的endpoint

headless使用场景

第一种:自主选择权,有时候client想自己来决定使用哪个Real Server,可以通过查询DNS来获取Real Server的信息。

第二种:Headless Service的对应的每一个Endpoints,即每一个Pod,都会有对应的DNS域名;这样Pod之间就能互相访问,集群也能单独访问pod

posted @ 2020-11-24 19:12  南昌拌粉的成长  阅读(21993)  评论(0编辑  收藏  举报