从软件系统架构设计分层的角度看,Kubernetes的Service是基于Pod的上层,业务应用部署在Pod中,使用Service绑定Pod部署的应用,Service可以对外或者对上层提供服务,当Pod集群在系统调度的过程中发生弹性伸缩的时候,Service无需关注Pod层的变化,从而将Service层与Pod层解耦合,本文主要描述Service的基本使用方式。
如上所示,定义一个名称为my-service的服务,使用选择器绑定名称是MyApp的Pod,该Service以端口80对外提供服务
如上所示,先定义一个名称是proxy运行着NGINX的Pod,再定义一个名称是nginx-service的Service,该Service与proxy Pod绑定
如上所示,先定义一个未绑定任何Pod的Service服务my-service,再定一个名称是my-service-1的EndpointSlice端点集合类型,绑定端点集与my-service的关系
如上所示,定义一个Service类型,给该Service配置多个不同协议端口,例如,http协议80端口、https协议443端口
如上所示,定义一个Service类型,该Service类型是NodePort,类型NodePort是使用服务器节点的物理端口作为对外提供服务的端口
ClusterIP 该Service类型是使用Kubennetes集群内部的IP地址对外提供服务 |
NodePort 该Service类型是使用Kubernetes集群服务器的节点IP以及对应的物理端口对外提供服务 |
LoadBalancer 该Service类型是使用外部提供的负载均衡器对外提供服务 |
ExternalName 该Service类型是使用Kubernetes集群域名系统提供的域名对外提供服务 |
如上所示,Kubernetes提供以上的Service类型,根据具体的业务场景使用不同的Service类型,Kubernetes默认的Service类型是ClusterIP
如上所示,定义一个Service类型,设置其类型是LoadBalancer、设置该负载均衡器的IP地址,使用负载均衡器分发流量
如上所示,定义一个Service类型,设置其类型是ExternalName,使用域名系统分发流量
如上所示,定义一个Service类型,设置externalIPs对应的IP地址列表,分发流量到其他集群