Kubernetes实战(二十六)-高可用负载均衡与外部服务(Service)

Kubernetes 可以方便的为容器应用提供了一个持续运行且方便扩展的环境,但是,应用最终是要被用户或其他应用访问、调用的。要访问应用pod,就会有以下两个问题:

  • pod是有生命周期的。它会根据集群的期望状态不断的在创建、删除、更新,所以pod的ip也在不断变化,如何访问到不断变化的pod?

  • 通常一个应用不会单只有一个pod,而是由多个相同功能的pod共同提供服务的。那么对这个应用的访问,如何在多个pod中负载均衡?

service主要就是用来解决这两个问题的。简单来说,它是一个抽象的api对象,用来表示一组提供相同服务的pod及对这组pod的访问方式。

Service 提供了我们访问单个或多个容器应用的能力。每个服务在其生命周期内,都拥有一个固定的IP地址和端口。每个服务对应了后台的一个或多个Pod,通过这种方式,客户端就不需要关心Pod所在的位置,方便后端进行方便的Pod扩容、缩容等操作。

可以通过下面的示意图来理解Service的作用,图示如下:

  Kubernetes实战(二十六)-高可用负载均衡与外部服务(Service)_第1张图片

由此可知,服务可以被外部的客户访问,也可以被内部的客户访问。Service通过创建时指定的标签选择器来决定用户的请求转发到后台的哪些Pods中。看一下Service创建的具体例子,内容如下:

apiVersion: v1
kind: Service
metadata:
  name: tomcat 
  labels:
    name: tomcat 
spec:
  type: NodePort
  clusterIP: 10.111.176.152
  ports:
  - nodePort: 30001
    targetPort: 8080
    port: 8080
    protocol: TCP
  selector:
    name: tomcat

这个例子定义了一个Service名为tomcat-svc,端口为8080,该服务会将用户的请求转发到后台带有 name=tomcat 标签的Pods上,验证 Service 创建情况,命令如下:

  $ kubectl get svc 

到此高可用负载均衡与外部服务(Service)介绍完成。

你可能感兴趣的:(Kubernetes实战,kubernetes)