Kubernetes中的每个Service可以视为微服务架构中的微服务。Service与后端的Pod副本集群之间是通过Label Selector实现对接的。
面对一组提供服务的Pod副本集群,通常需要部署一个负载均衡器(软件或硬件),为这组Pod开启对外服务端口,并将这些Pod的Endpoint列表加入对外端口的转发列表中。当客户端访问时,负载均衡器根据算法将请求转发到相应的Pod。
而运行在每个Node上的kube-proxy进程就是智能的软件负载均衡器,负责将对Service的请求转发到后端的某个Pod势力,并在内部实现服务的负载均衡与绘画保持机制。
Kubernetes的Service并不是共用一个负载均衡器的IP地址,而是每个Service都分配一个全局唯一的虚拟IP地址,也就是Cluster IP。
当Service创建后,Kubernetes分配Cluster IP,则在整个Service生命周期,它的Cluster IP都不会发生改变。
定义Service
创建tomcat-service.yaml
多端口服务
许多服务都需要暴露多个端口,kubernetes支持多端口定义
kind: Service
apiVersion: v1
metadata:
name: my-service
spec:
selector:
app: MyApp
ports:
- name: http
protocol: TCP
port: 80
targetPort: 9376
- name: https
protocol: TCP
port: 443
targetPort: 9377