本文为您介绍如何在控制台上使用镜像的方式创建应用。

前提条件

创建一个Serverless Kubernetes集群。详情参见创建Serverless Kubernetes集群

步骤一:配置应用基本信息

  1. 登录容器服务管理控制台
  2. 在控制台左侧导航栏中,单击Serverless集群
  3. 集群列表页面中,单击目标集群名称或者目标集群右侧操作列下的详情
  4. 在集群管理页左侧导航栏中,单击工作负载
  5. 无状态页签中,单击使用镜像创建
  6. 应用基本信息页面,设置应用的基本信息。
    配置项 描述
    应用名称 设置应用的名称。
    副本数量 应用包含的Pod数量。
    类型 定义资源对象的类型,可选择无状态有状态等。
    标签 为该应用添加一个标签,标识该应用。
    注解 为该应用添加一个注解(annotation)。
  7. 单击下一步。进入容器配置页面。

步骤二:配置容器

容器配置页签中,配置容器的镜像与资源、端口、环境变量、健康检查、生命周期、数据卷等。
说明容器配置页签上方,单击添加容器为应用的Pod设置多个容器。
  1. 基本配置区域,完成容器的基本配置。
    配置项 描述
    镜像名称 您可以单击选择镜像,在弹出的对话框中选择所需的镜像并单击确定。

    您还可以填写私有镜像。填写的格式为domainname/namespace/imagename:tag

    镜像Tag 您可以单击选择镜像Tag 选择镜像的版本。若不指定,默认为最新版。
    总是拉取镜像:为了提高效率,容器服务会对镜像进行缓存。部署时,如果发现镜像Tag与本地缓存的一致,则会直接复用而不重新拉取。所以,如果您基于上层业务便利性等因素考虑,在做代码和镜像变更时没有同步修改Tag ,就会导致部署时还是使用本地缓存内旧版本镜像。而选中该选项后,会忽略缓存,每次部署时重新拉取镜像,确保使用的始终是最新的镜像和代码。
    设置镜像密钥:单击设置镜像密钥设置镜像的密钥。对于私有仓库访问时,需要设置密钥,详情请参见使用镜像密钥
    所需资源 即为该应用预留资源额度,包括CPU和内存两种资源,即容器独占该资源,防止因资源不足而被其他服务或进程争夺资源,导致应用不可用。
    容器启动项
    • stdin:将控制台输入发送到容器。
    • tty:将标准输入控制台作为容器的控制台输入。
    特权容器
    • 选择特权容器,则privileged=true ,开启特权模式。
    • 不选择特权容器,则privileged=false ,关闭特权模式。
    Init Container 选中该项,表示创建一个Init Container。Init Container包含一些实用的工具,详情请参见Init Containers
  2. 端口设置区域,单击新增设置容器的端口。
    • 名称:设置容器端口名称。
    • 容器端口:设置暴露的容器访问端口或端口名,端口号必须介于1~65535。
    • 协议:支持TCP和UDP。
  3. 环境变量区域,单击新增设置环境变量。

    支持通过键值对的形式为Pod配置环境变量。用于给Pod添加环境标志或传递配置等,详情请参见Pod variable

    • 类型:设置环境变量的类型,支持自定义配置项等类型。配置项、密钥支持全部文件的引用,以密钥为例。

      选择密钥,选择变量,默认全部文件引用。

      对应的YAML,则引用了整个secret。yaml
    • 变量名称:设置环境变量名称。
    • 变量/变量引用:设置变量引用的值。
  4. 健康检查区域,根据需要开启存活检查就绪检查

    关于健康检查的更多信息,请参见Configure Liveness, Readiness and Startup Probes

    • 存活检查(Liveness):用于检测何时重启容器。
    • 就绪检查(Readiness):确定容器是否已经就绪,且可以接受流量。
    请求类型 配置说明
    HTTP请求 即向容器发送一个HTTP get请求,支持的参数包括:
    • 协议:HTTP/HTTPS。
    • 路径:访问HTTP server的路径。
    • 端口:容器暴露的访问端口或端口名,端口号必须介于1~65535。
    • HTTP头:即HTTP Headers,HTTP请求中自定义的请求头,HTTP允许重复的Header。支持键值对的配置方式。
    • 延迟探测时间(秒):即initialDelaySeconds,容器启动后第一次执行探测时需要等待多少秒,默认为3秒。
    • 执行探测频率(秒):即periodSeconds,指执行探测的时间间隔,默认为10秒,最小为1秒。
    • 超时时间(秒):即timeoutSeconds,探测超时时间。默认1秒,最小1秒。
    • 健康阈值:探测失败后,最少连续探测成功多少次才被认定为成功。默认是1,最小值是1。对于存活检查(liveness)必须是1。
    • 不健康阈值:探测成功后,最少连续探测失败多少次才被认定为失败。默认是3,最小值是1。
    TCP连接 即向容器发送一个TCP Socket,kubelet将尝试在指定端口上打开容器的套接字。 如果可以建立连接,容器被认为是健康的,如果不能就认为是失败的。支持的参数包括:
    • 端口:容器暴露的访问端口或端口名,端口号必须介于1~65535。
    • 延迟探测时间(秒):即initialDelaySeconds,容器启动后第一次执行探测时需要等待多少秒,默认为15秒。
    • 执行探测频率(秒):即periodSeconds,指执行探测的时间间隔,默认为10秒,最小为1秒。
    • 超时时间(秒):即timeoutSeconds,探测超时时间。默认1秒,最小1秒。
    • 健康阈值:探测失败后,最少连续探测成功多少次才被认定为成功。默认是1,最小值是1。对于存活检查(liveness)必须是1。
    • 不健康阈值:探测成功后,最少连续探测失败多少次才被认定为失败。默认是3,最小值是1。
    命令行 通过在容器中执行探针检测命令,来检测容器的健康情况。支持的参数包括:
    • 命令行:用于检测容器健康情况的探测命令。
    • 延迟探测时间(秒):即initialDelaySeconds,容器启动后第一次执行探测时需要等待多少秒,默认为5秒。
    • 执行探测频率(秒):即periodSeconds,指执行探测的时间间隔,默认为10秒,最小为1秒。
    • 超时时间(秒):即timeoutSeconds,探测超时时间。默认1秒,最小1秒。
    • 健康阈值:探测失败后,最少连续探测成功多少次才被认定为成功。默认是1,最小值是1。对于存活检查(liveness)必须是1。
    • 不健康阈值:探测成功后,最少连续探测失败多少次才被认定为失败。默认是3,最小值是1。
  5. 生命周期区域,设置容器的生命周期。

    您可以为容器的生命周期配置启动执行、启动后处理和停止前处理。具体请参见配置生命周期

    • 启动执行:为容器设置预启动命令和参数。
    • 启动后处理:为容器设置启动后的命令。
    • 停止前处理:为容器设置预结束命令。
  6. 数据卷区域,增加本地存储或云存储声明PVC(Persistent Volume Claim)等。
    支持增加以下存储卷:
    1. 本地存储
    2. 云存储声明(PersistentVolumeClaim)
    3. NAS
    4. 云盘
  7. 单击下一步,进行高级设置。

步骤三:完成高级配置

高级配置页签中设置访问、伸缩和标签注解。

  1. 访问设置区域,设置暴露后端Pod的方式。
    说明

    针对应用的通信需求,您可灵活进行访问设置:

    • 内部应用:对于只在集群内部工作的应用,您可以在创建服务时,根据需要虚拟集群IP节点端口类型的服务,来进行内部通信。
    • 外部应用:对于需要暴露到公网的应用,您可以采用两种方式进行访问设置。
      • 创建负载均衡类型的服务:您可以在创建服务时,选择负载均衡类型的服务。通过阿里云提供的负载均衡服务SLB(Server Load Balancer),使得该服务提供公网访问能力。
      • 创建路由(Ingress):通过创建路由(Ingress)提供公网访问能力。关于Ingress的更多信息请参见Ingress

    您可以设置暴露后端Pod的方式。本例中选择虚拟集群IP和路由(Ingress),构建一个公网可访问的Nginx应用。

    • 配置服务(Service):在服务(Service)右侧,单击创建设置创建服务配置项。
      配置项 描述
      名称 输入服务的名称。本例为nginx-svc。
      类型 选择服务类型,即服务访问的方式。本例中选择虚拟集群IP
      • 虚拟集群IP:即ClusterIP,指通过集群的内部IP暴露服务,选择该值,服务只能够在集群内部可以访问,这也是默认的ServiceType。
        说明 您的服务类型为虚拟集群IP时,才能设置实例间发现服务(Headless Service)
      • 负载均衡:即LoadBalancer,指阿里云提供的负载均衡服务(SLB),可选择公网访问或内部访问。阿里云负载均衡服务可以路由到NodePort服务和ClusterIP服务。
        • 新建SLB:您可以通过单击修改,修改SLB规格。
        • 使用已有负载均衡:您可以在已有的列表中选择SLB规格。
        说明 负载均衡类型支持新建SLB和使用已有SLB,且多个Kubernetes Service可以复用同一个SLB,但是存在以下限制:
        • 使用已有的负载均衡实例会强制覆盖已有监听。
        • Kubernetes通过Service创建的SLB不能复用(会导致SLB被意外删除)。只能复用您手动在控制台(或调用OpenAPI)创建的SLB。
        • 复用同一个SLB的多个Service不能有相同的前端监听端口,否则会造成端口冲突。
        • 复用SLB时,监听的名字以及虚拟服务器组的名字被Kubernetes作为唯一标识符。请勿修改监听和虚拟服务器组的名字。
        • 不支持跨集群复用SLB。
      端口映射 添加服务端口和容器端口。容器端口需要与后端的Pod中暴露的容器端口一致。
      外部流量策略
      • Local:流量只发给本机的Pod。
      • Cluster:流量可以转发到其他节点上的Pod。
      说明 您的服务类型为节点端口负载均衡时,才能设置外部流量策略
      注解 为该服务添加一个注解(annotation),配置负载均衡的参数。例如设置service.beta.kubernetes.io/alicloud-loadbalancer-bandwidth:20表示将该服务的带宽峰值设置为20Mbit/s,从而控制服务的流量。更多参数请参见通过Annotation配置负载均衡
      标签 为该服务添加一个标签,标识该服务。
    • 配置路由(Ingress):在路由(Ingress)右侧,单击创建设置后端Pod的路由规则。
      详细的路由配置信息,请参见路由配置说明
      注意 通过镜像创建应用时,您仅能为一个服务创建路由(Ingress)。本例中使用一个虚拟主机名称作为测试域名,您需要在hosts文件中添加一条域名映射(<Ingress外部端点> + <Ingress域名>)。在实际工作场景中,请使用备案域名。
      101.37.xx.xx   foo.bar.com    #即ingress的IP
      配置项 描述
      名称 输入路由的名称。本例为nginx-ingress。
      规则 路由规则是指授权入站到达集群服务的规则。详情请参见路由配置说明
      • 域名:输入Ingress域名。本例中使用测试域名foo.bar.com
      • 路径:指定服务访问的URL路径,默认为根路径/,本例中不做配置。每个路径 (path)都关联一个backend(服务),在阿里云SLB将流量转发到backend之前,所有的入站请求都要先匹配域名和路径。
      • 服务:选择服务的名称和对应端口。本例中为nginx-svc.
      • 开启TLS:配置安全的路由服务。具体可参见配置Ingress
      服务权重 设置该路径下多个服务的权重。服务权重采用相对值计算方式,默认值为100。
      注解
      • 单击重定向注解,可为路由添加一条典型的重定向注解。即nginx.ingress.kubernetes.io/rewrite-target:/,表示将/path路径重定向到后端服务能够识别的根路径/上面。
      • 您也可以单击添加按钮,输入注解名称和值,即Ingress的annotation键值对,Ingress的注解参见Annotations
      标签 为Ingress添加对应的标签,标示该Ingress的特点。

    访问设置区域,您可以看到创建完毕的服务和路由,您可单击变更删除进行二次配置。

  2. 伸缩配置区域,勾选是否开启容器组水平伸缩,从而满足应用在不同负载下的需求。
    容器服务支持容器组的弹性伸缩,即根据容器CPU和内存资源占用情况自动调整容器组数量。
    说明 若要启用自动伸缩,您必须为容器设置所需资源,否则容器自动伸缩无法生效。
    配置项 描述
    指标 支持CPU和内存,需要和设置的所需资源类型相同。
    触发条件 资源使用率的百分比,超过该使用量,容器开始扩容。
    最大副本数量 该应用可扩容的容器数量上限。
    最小副本数量 该应用可缩容的容器数量下限。
  3. 标签和注释区域,单击添加设置容器组的标签和注释。
    • Pod标签:为该Pod添加一个标签,标识该应用。
    • Pod注解:为该Pod添加一个注解(annotation)。
  4. 单击创建

步骤四:查看应用

创建完成页签中查看应用任务。

  1. 创建完成页签中单击查看应用详情。您可以看到新建的serverless-app-svc出现在无状态列表下。
    部署列表
  2. 在集群管理页左侧导航栏中,单击服务,可以看到新建的服务serverless-app-svc出现在服务列表下。
    服务列表
  3. 在浏览器中访问外部端点,您可访问Nginx欢迎页,本示例为Nginx。
    nginx