Service
SVC
用来做服务发现
k8s定义了这样一组抽象:一个Pod
的逻辑分组,一种可以访问它们的策略 - 通常称为微服务。这一组Pod
能够被Service
访问到,通常是通过Label Selector
每一个svc可以理解为是一个微服务
- svc提供4层负载均衡,没有7层能力,但有时我们需要更多的匹配规则来转发请求,这点上4层负载均衡是不支持的。
也就是说,svc只能够通过ip和端口进行转发,不能通过域名和主机名来实现负载均衡
通过Ingress可以使SVC具有7层负载均衡的能力
service的四种类型
- ClusterIP: 默认类型,自动分配一个仅Cluster内部可以访问的IP
- NodePort:在ClusterIP的基础上为每台机器上绑定一个端口,这样就可以通过
<NodeIP>:<NodePort>
访问服务 - LoadBalancer: 在NodePort的基础上,借助cloud provider创建一个外部负载均衡器,并将请求转发到
<NodeIP>:<NodePort>
- ExtrenalName: 把集群内部的服务引入到集群内部来,在集群内部直接使用。没有任何的代理被创建,这只有k8s>1.7或者更高版本的kube-dns支持。
svc原理导论图