一、service简介

service是一个抽象概念,定义了一个服务的多个pod逻辑合集和访问pod的策略,一般把service称为微服务。service使得外部可以访问集群内部的pod并且可以实现负载均衡。
可以通过type在ServiceSpec中指定一个需要的类型的 Service,Service的四种type:
ClusterIP(默认) - 在集群中内部IP上暴露服务。此类型使Service只能从群集中访问。
NodePort - 通过每个 Node 上的 IP 和静态端口(NodePort)暴露服务。NodePort 服务会路由到 ClusterIP 服务,这个 ClusterIP 服务会自动创建。通过请求 NodeIP:NodePort,可以从集群的外部访问一个 NodePort 服务。
LoadBalancer - 使用云提供商的负载均衡器(如果支持),可以向外部暴露服务。外部的负载均衡器可以路由到 NodePort 服务和 ClusterIP 服务。
ExternalName - 通过返回 CNAME 和它的值,可以将服务映射到 externalName 字段的内容,没有任何类型代理被创建。这种类型需要v1.7版本或更高版本kube-dnsc才支持。

二、service使用

使用之前使用deployment创建的pod做端口映射
在这里插入图片描述在这里插入图片描述上图中service的type为ClusterIP,Endpoints中的两个ip均为虚拟ip
service是通过labels来动态识别pod的
此时pod客户端可以通过service的名称访问后端的两个Pod,并且是负载均衡的
在这里插入图片描述以上通过cluster-ip访问后端两个pod的方式需要依附另外一个pod
在这里插入图片描述若要想从外部直接访问pod,需要更改service中的type类型,在cluster-ip的基础上随机分配一个端口号,此端口就在工作节点上

在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述此时访问pod时通过节点IP+端口号
在这里插入图片描述

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐