通过ACK快速搭建魔方游戏应用

更新时间: 2025-06-20 10:33:47

ACK集群提供高性能的容器化应用管理服务,让您轻松高效地在云端运行容器化应用。本文带您快速体验如何在ACK集群中通过集群控制台页面或kubectl客户端快速部署并公开一个容器化Demo应用,即魔方游戏,并监控应用的运行情况。

教程概览

2024-12-12_16-00-46 (1)本教程所使用的示例应用ACK-Cube为一个线上魔方游戏,该游戏通过容器镜像部署到ACK托管集群Pro版中。完成本教程后,您将创建一个魔方游戏应用,流程如下。

  1. 开通授权并创建ACK集群:快速完成开通授权并创建ACK集群。

  2. 部署魔方游戏应用:从两种部署方式中选择一种来部署游戏,包括控制台界面部署、kubectl部署。

  3. 公网访问应用:应用配置完成后,获取ack-cube服务的外部IP地址(External IP),并通过外部IP地址访问魔方游戏。

1. 快速创建集群

重要

当您首次使用ACK时,您需要开通并授权容器服务ACK,然后创建集群,在集群中部署魔方应用。如果您未开通容器服务并授权默认角色,以及未开通相关云产品,则可能无法正常使用容器服务及其关联功能。建议您按照官方文档指引完成相应配置和授权,以确保服务能够顺利运行。详细操作,请参见快速创建ACK托管集群。关于ACK集群及其所使用云资源的收费情况,请参见产品计费

创建ACK托管集群时,您可以选择开启智能托管模式。开启后,您仅需进行简单的规划配置,即可一键创建符合最佳实践的ACK集群。该集群会默认创建一个智能托管节点池,其中的节点生命周期将由ACK进行托管和运维。更多信息,请参见创建ACK托管集群(智能托管模式)

说明

如果您需要对集群进行详细自定义配置,可参见创建ACK托管集群的完整流程来完成集群创建。

  1. 登录容器服务管理控制台集群列表页面,单击创建集群image

  2. 在上方选择ACK 托管集群页签,单击开启智能托管,如果您有公网访问集群能力的需求,您可以在个人测试集群勾选使用 EIP 暴露 API server获得该能力,方便您的后续连接和管理集群。然后单击确认配置,检查所选配置后单击创建集群

    image

2. 部署应用

您可以通过控制台、kubectl工具手动配置应用参数部署魔方游戏。

  • 控制台界面部署:通过控制台部署并公开应用、访问应用。

  • kubectl部署:通过kubectl工具连接集群(CloudShell、kubectl客户端、Workbench)、部署公开应用、访问应用。

重要

本文中的示例中使用了一个公网镜像,拉取公网镜像需要集群或节点具备公网访问能力:

  • 为集群开启访问公网的能力(推荐):为集群所在的VPC创建公网NAT网关,使集群中的所有资源获得公网访问能力。

  • 为节点分配固定公网IP:拥有公网IP的节点即可拉取公网镜像。但您需要为部署工作负载的每一个节点都分配公网IP。

控制台部署

2.1 部署并公开应用

本步骤指导您如何在新创建的ACK集群中快速部署一个无状态工作负载(Deployment),即魔方游戏,并将该应用向公网公开。关于创建Deployment的详细参数描述,请参见创建无状态工作负载Deployment

  1. 在集群列表页面中,单击目标集群名称(即ACK-Demo)。

  2. 在集群管理页左侧导航栏,选择工作负载 > 无状态

  3. 无状态页面,单击使用镜像创建

  4. 应用基本信息页签,设置应用名称为ack-cube。

  5. 单击下一步,在容器配置页签,配置容器的相关参数。

    image

    配置项

    说明

    示例值

    镜像名称

    直接输入镜像名称。

    输入registry.cn-hangzhou.aliyuncs.com/acr-toolkit/ack-cube:1.0

    资源限制

    根据需要为该应用指定所能使用的资源上限,防止占用过多资源。

    1 Core,内存1024 MiB,Ephemeral Storage为空。

    所需资源

    根据需要为该应用指定预留的资源额度,防止因资源不足而导致应用不可用。

    0.5 Core,内存512 MiB,Ephemeral Storage为空。

    端口

    设置容器的端口。

    • 名称:ack-cube。

    • 容器端口:80。

    • 协议:TCP。

  6. 单击下一步,在高级配置页签,单击服务(Service)创建。在弹出的创建服务对话框中,设置服务的相关参数公开ack-cube应用,服务(Service)配置完成后单击确定即可。image

    配置项

    说明

    示例值

    名称

    输入服务的名称。

    ack-cube-svc

    类型

    选择服务类型,即服务访问的方式。依次选择负载均衡 > 传统型负载均衡CLB > 新建资源,在个人测试环境CLB资源保持默认即可。

    使用默认设置。

    端口

    设置服务端口容器端口容器端口需要与后端的Pod中暴露的容器端口一致。

    • 服务端口:80。

    • 容器端口:80。

    • 协议:TCP。

  7. 工作负载相关参数配置完成后,单击创建即可。创建成功后,默认进入创建完成页面,会列出应用包含的对象,您可以单击查看应用详情进行查看。succeed

2.2 访问应用

本步骤指导您如何通过服务(Service)来访问新部署的容器化应用。

登录容器服务管理控制台集群列表页面,单击目标集群名称,然后在左侧导航栏,选择工作负载 > 无状态找到命名空间为default,名称为ack-cube的应用。单击访问方式页签,找到新创建的服务(即ack-cube-svc),单击外部端点列的链接,即可访问魔方游戏。image

kubectl部署

2.1 连接集群

您可以通过kubectl、Workbench或CloudShell连接集群。

CloudShell

在CloudShell启动时会自动为您分配一台Linux虚拟机供您免费使用。该虚拟机已预装多种常用环境与工具,配合CloudShell提供的Web IDE,辅助您完成日常的云资源管理。本步骤指导您如何通过CloudShell快速连接到ACK集群。更多信息,请参见在Workbench或CloudShell上使用kubectl连接集群

登录容器服务管理控制台在控制台左侧导航栏,单击目标集群集群信息页面中,选择基本信息 > 通过CloudShell管理集群

等待数秒启动成功之后,您就可以在CloudShell界面通过kubectl命令来管理集群和应用。

Workbench

您可以使用阿里云提供的浏览器远程连接工具Workbench,使用该工具,您无需额外安装任何软件即可通过浏览器直接访问ACK集群。详细操作,请参见通过Workbench连接实例

登录容器服务管理控制台在控制台左侧导航栏,单击目标集群集群信息页面中,选择基本信息 > 通过Workbench管理集群

等待数秒启动成功之后,根据页面指引您就可以在Workbench界面中,通过kubectl命令来管理集群和应用。

kubectl客户端

如果您需要使用公网机器访问集群,您可以为该机器安装设置kubectl客户端,使用该工具通过公网机器直接访问集群。本步骤指导您如何通过kubectl客户端快速连接到ACK集群。更多信息,请参见获取集群KubeConfig并通过kubectl工具连接集群

  1. 安装和设置 kubectl客户端。有关详细信息请参见安装和设置 kubectl

  2. 登录容器服务管理控制台在控制台左侧导航栏,单击集群在集群列表页面中,单击目标集群名称(即ACK-Demo)。集群信息页面,单击连接信息页签,复制公网访问页签下的内容(即集群的公网访问凭证)。将复制的集群凭证内容粘贴至$HOME/.kube目录下的config文件中,保存并退出。

    说明

    如果客户端机器$HOME/目录下没有.kube目录和config文件,请自行创建。

  3. 执行kubectl命令验证集群的连通性。

    以查询命名空间为例,执行以下命令。

    kubectl get namespace

    预期输出:

    NAME              STATUS   AGE
    arms-prom         Active   4h39m
    default           Active   4h39m
    kube-node-lease   Active   4h39m
    kube-public       Active   4h39m
    kube-system       Active   4h39m

2.2 部署并公开应用

本步骤指导您如何通过kubectl在新创建的ACK集群中快速部署一个无状态工作负载(Deployment),并将其通过LoadBalancer类型服务(Service)公开。关于服务公开的详细操作,请参见通过使用自动创建负载均衡的服务公开应用

  1. 使用以下示例应用的YAML内容,创建名为ack-cube.yaml的文件。

    apiVersion: apps/v1 # for versions before 1.8.0 use apps/v1beta1
    kind: Deployment
    metadata:
      name: ack-cube #应用名称。
      labels:
        app: ack-cube
    spec:
      replicas: 2 #设置副本数量。
      selector:
        matchLabels:
          app: ack-cube  #对应服务中Selector的值需要与其一致,才可以通过服务公开此应用。
      template:
        metadata:
          labels:
            app: ack-cube
        spec:
          containers:
          - name: ack-cube
            image: registry.cn-hangzhou.aliyuncs.com/acr-toolkit/ack-cube:1.0 #替换为您实际的镜像地址,格式为:<image_name:tags>。
            ports:
            - containerPort: 80 #需要在服务中暴露该端口。
            resources:
              limits: #设置资源限制。
                cpu: '1'
                memory: 1Gi
              requests: #设置所需资源
                cpu: 500m
                memory: 512Mi        
  2. 执行以下命令,部署Demo应用ack-cube。

    kubectl apply -f ack-cube.yaml
  3. 执行以下命令,确认示例应用状态正常。

    kubectl get deployment ack-cube

    预期输出:

    NAME       READY   UP-TO-DATE   AVAILABLE   AGE
    ack-cube   2/2     2            2           96s
  4. 使用以下示例服务的YAML内容,创建名为ack-cube-svc.yaml的文件。将selector修改为ack-cube.yaml示例应用文件中matchLabels的值(本示例为app: ack-cube),从而将该服务关联至后端应用。

    apiVersion: v1
    kind: Service
    metadata:
      labels:
        app: ack-cube
      name: ack-cube-svc
      namespace: default
    spec:
      ports:
      - port: 80
        protocol: TCP
        targetPort: 80
      selector:
        app: ack-cube # 需要与Deployment YAML文件中的matchLabels的值一致。
      type: LoadBalancer
  5. 执行以下命令创建名为ack-cube-svc的服务,并通过其公开应用。

    ACK会自动创建一个公网SLB,并将其绑定至该服务。

    kubectl apply -f ack-cube-svc.yaml
  6. 执行以下命令确认LoadBalancer类型的服务创建成功。

    示例应用将通过EXTERNAL-IP字段的IP地址向公网公开。

    kubectl get svc ack-cube-svc

    预期输出:

    NAME           TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)        AGE
    ack-cube-svc   LoadBalancer   172.16.72.161   47.94.xx.xx   80:31547/TCP   32s
  7. 将 EXTERNAL-IP(47.94.xx.xx)地址输入浏览器地址栏,即可访问魔方游戏应用。

3.(可选)释放资源

使用ACK托管集群Pro版所产生的费用包括两部分:集群管理费用(由ACK收取),以及所使用的其他阿里云云产品资源费用(由各云产品收取)。

如果您无需继续使用集群,请登录容器服务管理控制台,在集群列表页面的操作列,单击目标集群对应的更多 > 删除。在删除集群及关联资源页面,您可选择删除集群关联资源,然后单击删除即可。关于删除ACK集群的更多信息,请参见删除集群

重要

智能托管集群默认启用了删除保护功能。在删除集群前,请先关闭集群删除保护状态。

image

相关文档

  • 如果您业务的资源需求不易预测或有周期性变化,例如Web应用、游戏服务、在线教育等场景,推荐您在集群中配置弹性伸缩,包括工作负载伸缩和计算资源伸缩,请参见弹性伸缩

  • 除了通过Service公开应用,您还可以通过路由Ingress实现对应用的七层网络路由控制,请参见Ingress管理

  • 除了观测容器性能,您还可以观测集群基础设施、应用性能和用户业务,监控和日志两部分,通过监控功能查看系统的运行状态,通过日志协助问题的排查和诊断,请参见可观测性

上一篇: 快速创建ACK托管集群 下一篇: 使用指引
阿里云首页 容器服务Kubernetes版 相关技术圈