ACK集群提供高性能的容器化应用管理服务,让您轻松高效地在云端运行容器化应用。本文带您快速体验如何在ACK集群中通过控制台快速部署并公开一个容器化Demo应用,即魔方游戏,并监控应用的运行情况。
教程概览
本教程所使用的示例应用ACK-Cube为一个线上魔方游戏,该游戏通过容器镜像部署到ACK集群Pro版中。完成本教程后,您将创建一个魔方游戏应用,流程如下。
开通授权并创建ACK集群:快速完成开通授权并创建ACK集群。
部署魔方游戏应用:从三种部署方式中选择一种来部署游戏,包括控制台界面部署、ROS快速部署、kubectl部署。
公网访问应用:应用配置完成后,获取ack-cube服务的外部IP地址(External IP),并通过外部IP地址访问魔方游戏。
操作步骤
您可以从三种部署方式中选择一种来部署魔方游戏应用。
控制台界面部署流程:快速创建集群、部署并公开应用、访问应用。
ROS快速部署流程:ROS一键部署集群环境、访问应用。
kubectl部署流程:快速创建集群、连接集群(CloudShell、kubectl客户端、Workbench)、部署并公开应用、访问应用。
控制台
当您首次使用ACK时,您需要开通并授权容器服务ACK,然后创建集群,在集群中部署魔方应用。
1. 快速创建集群
如果您未开通容器服务并授权默认角色,以及未开通相关云产品,则可能无法正常使用容器服务及其关联功能。建议您按照官方文档指引完成相应配置和授权,以确保服务能够顺利运行。详细操作,请参见快速创建ACK托管集群。关于ACK集群及其所使用云资源的收费情况,请参见产品计费。
如果您是首次使用,期望快速体验如何创建一个集群,您可以使用集群默认配置。如需构建一个生产环境的集群,请参见创建ACK托管集群。
登录容器服务管理控制台。在集群列表页面,单击创建集群。
在上方选择ACK 托管集群页签,集群规格选择为Pro版,如果您有公网访问集群能力的需求,您可以在个人测试集群勾选使用 EIP 暴露 API server获得该能力,方便您的后续连接和管理集群。然后单击右下方的下一步:节点池配置按钮。
在实例规格中选择任何4 vCPU、8GiB内存的规格,例如计算型 c6(ecs.c6.xlarge)。然后单击右下方的下一步:组件配置按钮。
容器监控可选择免费基础版。然后单击右下方的下一步:确认配置按钮。
最后单击右下方的创建集群按钮,等待集群创建完成即可。
2. 部署并公开应用
本步骤指导您如何在新创建的ACK集群中快速部署一个无状态应用(Deployment),即魔方游戏,并将该应用向公网公开。关于创建Deployment的详细参数描述,请参见创建无状态工作负载Deployment。
在集群列表页面中,单击目标集群名称(即ACK-Demo)。
在集群管理页左侧导航栏,选择 。
在无状态页面,单击使用镜像创建。
在应用基本信息页签,设置应用名称为ack-cube。
单击下一步,在容器配置页签,配置容器的相关参数。
配置项
说明
示例值
镜像名称
直接输入镜像名称。
输入
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。
单击下一步,在高级配置页签,单击服务(Service)右侧的创建。
在创建服务对话框中,设置服务的相关参数,单击创建,以通过该服务公开ack-cube应用。
配置项
说明
示例值
名称
输入服务的名称。
ack-cube-svc
类型
选择服务类型,即服务访问的方式。依次选择负载均衡 > 传统型负载均衡CLB > 新建资源,在个人测试环境CLB资源保持默认即可。
使用默认设置。
端口
设置服务端口和容器端口。容器端口需要与后端的Pod中暴露的容器端口一致。
皆为80。
在高级配置页签,单击页面右下角的创建。
创建成功后,默认进入创建完成页面,会列出应用包含的对象,您可以单击查看应用详情进行查看。
3. 访问应用
本步骤指导您如何通过服务(Service)来访问新部署的容器化应用。
登录容器服务管理控制台,在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择找到命名空间为default,名称为ack-cube的应用。单击访问方式页签,找到新创建的服务(即ack-cube-svc),单击外部端点列的链接,即可访问魔方游戏。 。
ROS快速部署
您可以借助ROS模板一键部署,在10分钟内搭建起ACK集群并部署魔方游戏应用。同时使用负载均衡服务将该应用分配一个可访问的公网IP地址。您只需在浏览器中点击,即可轻松访问该应用。
如果您未开通容器服务并授权默认角色,以及未开通相关云产品,则可能无法正常使用容器服务及其关联功能。建议您按照官方文档指引完成相应配置和授权,以确保服务能够顺利运行。详细操作,请参见快速创建ACK托管集群。关于ACK集群及其所使用云资源的收费情况,请参见产品计费。
打开一键配置模板链接前往ROS控制台,系统自动打开使用新资源创建资源栈的面板。在页面最上方选择部署地域,例如华北5(呼和浩特),然后设置配置项,单击创建。
配置项
说明
示例
资源栈名称
自定义。
stack_2023-06-12_cBesTX8FB
集群名称
自定义。
说明不能与现有ACK集群重名。
ack-demo-cube
可用区
选中可用区。
可用区A
节点规格
选择实例规格组。
可通过vCPU、内存筛选实例规格,也可选择架构和分类。
例如通用型 g6
节点系统盘磁盘类型
选择节点系统盘磁盘类型。
节点系统盘可选的类型与选择的实例规格相关。查询实例规格支持的云盘类型,请参见实例规格族。如果云盘类型下拉列表没有显示的云盘类型,代表不支持该云盘类型。
cloud_essd
节点登录密码
设置节点登录密码。
请自行设置。
在资源栈信息页签中,显示状态为创建成功,表示快速创建成功。
在资源栈信息页签中,显示状态不为创建成功,表示快速创建不成功。可以根据界面提示单击创建一键诊断,查看详细信息。
测试应用。
待资源栈信息页签中状态显示为创建成功后,单击资源栈信息页签右侧的输出页签。然后单击CubeAddress后的链接,即可访问魔方游戏。
kubectl
1. 快速创建集群
如果您未开通容器服务并授权默认角色,以及未开通相关云产品,则可能无法正常使用容器服务及其关联功能。建议您按照官方文档指引完成相应配置和授权,以确保服务能够顺利运行。详细操作,请参见快速创建ACK托管集群。关于ACK集群及其所使用云资源的收费情况,请参见产品计费。
如果您是首次使用,期望快速体验如何创建一个集群,您可以使用集群默认配置。如需构建一个生产环境的集群,请参见创建ACK托管集群。
登录容器服务管理控制台。在集群列表页面,单击创建集群。
在上方选择ACK 托管集群页签,集群规格选择为Pro版,如果您有公网访问集群能力的需求,您可以在个人测试集群勾选使用 EIP 暴露 API server获得该能力,方便您的后续连接和管理集群。然后单击右下方的下一步:节点池配置按钮。
在实例规格中选择任何4 vCPU、8GiB内存的规格,例如计算型 c6(ecs.c6.xlarge)。然后单击右下方的下一步:组件配置按钮。
容器监控可选择免费基础版。然后单击右下方的下一步:确认配置按钮。
最后单击右下方的创建集群按钮,等待集群创建完成即可。
2. 连接集群
您可以通过kubectl、Workbench或CloudShell连接集群。
CloudShell
如果您需要快速使用公网访问集群,但不想重复配置kubectl客户端,您可以使用阿里云提供的CloudShell网页版命令行工具。在CloudShell启动时会自动为您分配一台Linux虚拟机供您免费使用。该虚拟机已预装多种常用环境与工具,配合CloudShell提供的Web IDE,辅助您完成日常的云资源管理。本步骤指导您如何通过CloudShell快速连接到ACK集群。更多信息,请参见在CloudShell上通过kubectl管理Kubernetes集群。
登录容器服务管理控制台。在控制台左侧导航栏,单击目标集群。在集群信息页面中,选择。
等待数秒启动成功之后,您就可以在CloudShell界面通过kubectl命令来管理集群和应用。
kubectl客户端
如果您需要使用公网机器访问集群,您可以为该机器安装设置kubectl客户端,使用该工具通过公网机器直接访问集群。本步骤指导您如何通过kubectl客户端快速连接到ACK集群。更多信息,请参见获取集群KubeConfig并通过kubectl工具连接集群。
安装和设置 kubectl客户端。有关详细信息请参见安装和设置 kubectl。
登录容器服务管理控制台。在控制台左侧导航栏,单击集群。在集群列表页面中,单击目标集群名称(即ACK-Demo)。在集群信息页面,单击连接信息页签,复制公网访问页签下的内容(即集群的公网访问凭证)。将复制的集群凭证内容粘贴至$HOME/.kube目录下的config文件中,保存并退出。
说明如果客户端机器$HOME/目录下没有.kube目录和config文件,请自行创建。
执行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
Workbench
如果您不需要使用公网访问集群,您可以使用阿里云提供的浏览器远程连接工具Workbench,使用该工具,您无需额外安装任何软件即可通过浏览器直接访问ACK集群。详细操作,请参见通过Workbench连接实例。
登录容器服务管理控制台。在控制台左侧导航栏,单击目标集群。在集群信息页面中,选择。
等待数秒启动成功之后,根据页面指引您就可以在Workbench界面中,通过kubectl命令来管理集群和应用。
3. 部署并公开应用
本步骤指导您如何通过kubectl在新创建的ACK集群中快速部署一个无状态应用(Deployment),并将其通过LoadBalancer类型服务(Service)公开。关于服务公开的详细操作,请参见通过使用自动创建负载均衡的服务公开应用。
使用以下示例应用的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
执行以下命令,部署Demo应用ack-cube。
kubectl apply -f ack-cube.yaml
执行以下命令,确认示例应用状态正常。
kubectl get deployment ack-cube
预期输出:
NAME READY UP-TO-DATE AVAILABLE AGE ack-cube 2/2 2 2 96s
使用以下示例服务的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
执行以下命令创建名为ack-cube-svc的服务,并通过其公开应用。
ACK会自动创建一个公网SLB,并将其绑定至该服务。
kubectl apply -f ack-cube-svc.yaml
执行以下命令确认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
(可选)释放资源
使用ACK集群Pro版所产生的费用包括两部分:集群管理费用(由ACK收取),以及所使用的其他阿里云云产品资源费用(由各云产品收取)。
如果您无需继续使用集群,请登录容器服务管理控制台,在集群列表页面的操作列,单击目标集群对应的更多 > 删除。在删除集群及关联资源页面,您可选择删除集群关联资源,然后单击删除即可。关于删除ACK集群的更多信息,请参见删除集群。
相关文档
如果您业务的资源需求不易预测或有周期性变化,例如Web应用、游戏服务、在线教育等场景,推荐您在集群中配置弹性伸缩,包括工作负载伸缩和计算资源伸缩,请参见弹性伸缩概述。
除了通过Service公开应用,您还可以通过路由Ingress实现对应用的七层网络路由控制请参见创建Nginx Ingress。
除了观测容器性能,您还可以观测集群基础设施、应用性能和用户业务,监控和日志两部分,通过监控功能查看系统的运行状态,通过日志协助问题的排查和诊断,请参见可观测性体系概述。