从零开始的Linux运维屌丝之路,资源免费分享平台   运维人员首选:简单、易用、高效、安全、稳定、社区活跃的开源软件

Kubernetes中Service的种类

发布:蔺要红11-12分类: K8S

Service的概念

Kubernetes Service定义了这样一种抽象:一个Pod的逻辑分组,一种可以访问它们的策略–通常称为微服务,这一组Pod能够被Service访问到,通常是通过Label Selector
Service能够提供负载均衡能力,但是在使用上有以下限制:
只提供4层负载能力,而没有7层功能,但是有时我们可能需要更多的匹配规则来转发请求,这点来说4层负载均衡时不支持的


Service的四种类型:

ClusterIP:默认类型,自动分配一个仅Cluster内部可访问的虚拟IP
NodePort:在ClusterIP基础上为Service在每台机器上绑定一个端口,这样就可以通过:来访问该服务
LoadBalance:在NodePort的基础上,借助cloud provider创建一个外部负载均衡器,并将请求转发到该服务
ExternalName:把集群外部的服务引入到集群内部来,在集群内部直接使用,没有任何类型代理被创建,这只有Kubernetes1.7以上版本的kube-dns才支持

LoadBalancer
LoadBalancer和NodePode其实是同一种方式,区别在于loadBalancer比NodePort多了一步,就是可以调用cloud provider去创建LB来向节点导流(收费,laas:负载均衡即服务)

NodePort

NodePort的原理在于在node上开了一个端口,将向该端口的流量导入到kube-proxy,然后有kube-proxy进一步给对应的Pod

Headless Service
有时不需要或不想要负载均衡,以及单独的Service IP,遇到这种情况,可以通过指定ClusterIP的值为None来创建Headless Service,这类Service并不会分配ClusterIP,kube-proxy不会处理它们,并且平台也不会为它们进行负载均衡和路由


ExternalName
这种类型的Service通过返回CNAME和它的值,可以将服务映射到ExternalName字段的内容,ExternalName Service是Service的特例,它没有selector,也没有定义任何的端口和endpoint,相反的,对于运行在集群外部的服务,它通过返回该外部服务的别名这种方式来提供服务


 
温馨提示如有转载或引用以上内容之必要,敬请将本文链接作为出处标注,如有侵权我会在24小时之内删除!

欢迎使用手机扫描访问本站