headless

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集群的域名。



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



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

headless使用场景



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



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



dns查询会如实的返回2个真实的endpoint
% kubectl get svc -o wide
% nslookup apple-service.default.svc.cluster.local
Server: 192.168.1.1



https://www.cnblogs.com/wuchangblog/p/14032057.html



headless Service和普通Service的区别
headless不分配clusterIP



headless service可以通过解析service的DNS,返回所有Pod的地址和DNS(statefulSet部署的Pod才有DNS)



普通的service,只能通过解析service的DNS返回service的ClusterIP



二、statefulSet和Deployment控制器的区别
statefulSet下的Pod有DNS地址,通过解析Pod的DNS可以返回Pod的IP
deployment下的Pod没有DNS



https://my.oschina.net/u/4414713/blog/3422088



在K8S里,我们想要通过name来访问服务的方式就是在Deployment上面添加一层Service,这样我们就可以通过Service name来访问服务了,那其中的原理就是和CoreDNS有关,它将Service name解析成Cluster IP,这样我们访问Cluster IP的时候就通过Cluster IP作负载均衡,把流量分布到各个POD上面。我想的问题是CoreDNS是否会直接解析POD的name,在Service的服务里,是不可以的,因为Service有Cluster IP,直接被CoreDNS解析了,那怎么才能让它解析POD呢,有大牛提出了可以使用Headless Service,所以我们就来探究一下什么是Headless Service。



  Headless Service也是一种Service,但不同的是会定义spec:clusterIP: None,也就是不需要Cluster IP的Service。
  我们首先想想Service的Cluster IP的工作原理:一个Service可能对应多个EndPoint(Pod),client访问的是Cluster IP,通过iptables规则转到Real Server,从而达到负载均衡的效果。



https://www.jianshu.com/p/a6d8b28c88a2



认为URI就是URL。
   实际上,从其名称上来看,URI(Uniform Resource Identifier) 和URL(Uniform Resource Locator )两者名称都不一样,所以必然有区别,前者是统一资源标识符,后者是统一资源定位符,后者是网络上用于定位互联网上Web资源的,如HTML文档、图像、视频片段、程序等。



(2)它是一个通用定义,不是“protocols”,也不是URI protocols或者URL protocols。



(3)它经常用于设计特殊的协议。如http scheme(HTTP协议), XML namespaces,文件标示等等。



从上面的一些结论来看,URI Scheme实际上一个概念性的东西,是一个规范,所以符合它的规范的都可以称之为URI Scheme,当然,我们也可以设计我们自己的scheme,用来实现我们特殊的目的。它一般具有如下的形式:



: [ ? ] [ # ]


https://blog.csdn.net/woyaowenzi/article/details/7313543

https://github.com/grpc/grpc/blob/master/doc/naming.md

https://github.com/grpc/grpc/issues/24638

https://zh.wikipedia.org/wiki/%E7%BB%9F%E4%B8%80%E8%B5%84%E6%BA%90%E6%A0%87%E5%BF%97%E7%AC%A6


Category k8s