创建服务

本文档为您介绍如何在ACK Serverless集群中创建服务。

前提条件

已创建ACK Serverless集群。具体操作,请参见创建ACK Serverless集群

背景信息

Kubernetes Service定义了这样一种抽象:一个Pod的逻辑分组,一种可以访问它们的策略,通常称为微服务。这一组Pod能够被Service访问到,通常是通过Label Selector来实现。

在Kubernetes中,Pod虽然拥有独立的IP,但Pod会快速地创建和删除,因此通过Pod直接对外界提供服务不符合高可用的设计准则。通过Service,Service能够解耦frontend(前端)和backend(后端)的关联,frontend不用关心backend的具体实现,从而实现松耦合的微服务设计。

更多详细的原理,请参见Kubernetes service

步骤一:创建Deployment

使用镜像创建一个Deployment,本例中创建的Deployment名称为serverless-app-deployment。具体操作,请参见使用镜像创建应用

步骤二:创建服务

  1. 登录容器服务管理控制台,在左侧导航栏选择集群

  2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择网络 > 服务

  3. 服务页面,单击创建

  4. 在弹出的创建服务对话框中,配置相关参数,然后单击创建

    参数

    说明

    服务名称

    输入服务的名称,本文配置为nginx-svc

    服务类型

    选择服务类型,即服务访问的方式。

    • 虚拟集群IP:即ClusterIP,指通过集群的内部IP暴露服务,选择该值,服务只能够在集群内部可以访问,这也是默认的ServiceType。

      说明

      您的服务类型为虚拟集群IP时,才能设置实例间服务发现(Headless Service)

    • 负载均衡:即LoadBalancer,指阿里云提供的负载均衡服务(SLB),可选择公网访问或私网访问。阿里云负载均衡服务可以路由到NodePort服务和ClusterIP服务。

      说明

      负载均衡类型支持新建SLB和使用已有SLB,且多个Kubernetes Service可以复用同一个SLB,但是存在以下限制:

      • 使用已有的负载均衡实例会强制覆盖已有监听。

      • Kubernetes通过Service创建的SLB不能复用(会导致SLB被意外删除)。只能复用您手动在控制台(或调用OpenAPI)创建的SLB。

      • 复用同一个SLB的多个Service不能有相同的前端监听端口,否则会造成端口冲突。

      • 复用SLB时,监听的名字以及虚拟服务器组的名字被Kubernetes作为唯一标识符。请勿修改监听和虚拟服务器组的名字。

      • 不支持跨集群复用SLB。

    服务关联

    选择服务要绑定的后端对象,本例为步骤一创建的serverless-app-deployment。若不进行关联部署,则不会创建相关的Endpoints对象,您可自己进行绑定,详情请参见services-without-selectors

    外部流量策略

    可选值为LocalCluster

    说明

    当服务类型为负载均衡时,支持设置外部流量策略

    端口映射

    添加服务端口和容器端口,容器端口需要与后端的Pod中暴露的容器端口一致。

    注解

    为该服务添加一个注解(Annotation),配置负载均衡的参数,例如设置service.beta.kubernetes.io/alicloud-loadbalancer-bandwidth:20表示将该服务的带宽峰值设置为20 Mbit/s,从而控制服务的流量。更多信息,请参见通过Annotation配置负载均衡

    标签

    为该服务添加一个标签,标识该服务。

    创建完成后,您可以在服务页面的操作列下,对服务进行查看、更新或删除操作。