什么是 Kubernetes Service?

Kubernetes Service是一种抽象,它定义了Pod逻辑集合和访问它们的策略。Service允许您通过单个服务访问一组Pod,而不必担心后端Pod的变化。

Service的主要作用:

  1. 为一组具有相同功能的Pod提供一个统一的入口地址。
  2. 负载均衡并分发服务请求到Pod上。
  3. 隔离后端Pod的变化对客户端的影响。客户端只识别Service地址。
  4. 提供Service发现能力,使Pod可以找出它需要交互的Service地址。

Service类型主要有三种:

  1. ClusterIP: 在集群内部公开服务,自动分配一个仅集群内部可以访问的虚拟IP。这是默认类型。
  2. NodePort: 在每个节点上开放一个端口,然后使用 : 来联系服务。
  3. LoadBalancer:创建一个外部负载均衡器,并为Service分配一个固定的外部IP。

一个简单的Service定义如下:

apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: MyApp
  ports:
    - protocol: TCP
      port: 80
      targetPort: 9376

这个定义一个selector为”app=MyApp”的Service,端口为80,目标端口为容器的9376端口。

所以,Service主要作用是提供以下能力:

  1. 服务发现:通过环境变量和DNS以及API可以发现Service地址。
  2. 负载均衡:将请求均衡分发给Service后端的多个Pod。
  3. 支持动态伸缩:Service会自动发现和绑定新创建的Pod,并从绑定中删除被删除的Pod。

要理解Service,主要需要掌握:

  1. 3种Service类型及其作用。
  2. Service选择Pod的Selector机制。
  3. Service工作流程:创建一个Service,将产生什么资源和行为。
  4. 会编写和创建不同类型的Service定义。
  5. 会使用Label和Selector机制设计Service与Pod的对应关系。
  6. 理解Service如何实现服务发现与负载均衡的。
  7. 掌握Service的限制和注意事项。

理解Service对于熟练使用Kubernetes至关重要。它抽象了Pod,为微服务架构中的服务提供了统一入口和动态扩展能力。服务发现和负载均衡是微服务体系结构中的两个关键能力,而Kubernetes Service正是提供这两项功能的重要手段。