通过ACK Serverless搭建企业级网站应用

更新时间:
复制为 MD 格式

本次实验任务实现了将容器化的应用快速发布到阿里云ACK Serverless集群中,并实现外部访问,同时在ACK Serverless集群中进行应用的管理和运维,来体验低门槛高效率的容器服务管理平台。

场景简介

当容器应用日渐增多且容器间的调用关系越来越复杂时,在服务器上直接部署容器应用将使日常的管控工作变的困难。为了简化复杂的分布式应用程序管理、提高资源利用率、实现弹性伸缩并保障容器的服务发现和负载均衡,有必要使用容器编排来管控我们的容器应用。

本次实验任务实现了将容器化的应用快速发布到阿里云ACK Serverless集群中,并实现外部访问,同时在ACK Serverless集群中进行应用的管理和运维,来体验低门槛高效率的容器服务管理平台。

实验主要分为以下几个步骤:

  • ASK集群创建。

  • 通过镜像在ASK中部署无状态容器应用。

  • 配置数据持久化(PV/PVC)。

  • 配置Service实现外部访问。

  • ASK集群管理与应用运维。

  • 资源释放。

费用说明

本实验预计2个小时产生费用4元。如果您调整了资源规格、使用时长,或执行了本方案以外的操作,可能导致费用发生变化,请以控制台显示的实际价格和最终账单为准。

背景知识

本场景主要涉及以下云产品和服务:

  • 容器服务Serverless版 ACK Serverless

    容器服务 Serverless 版 ACK Serverless 是一款基于阿里云弹性计算基础架构,同时完全兼容 Kubernetes 生态,安全、可靠的容器产品。通过该产品,您无需管理和维护集群即可快速创建 Kubernetes 容器应用,并且根据应用实际使用的 CPU 和内存资源量进行按需付费,从而使您更专注于应用本身,而非运行应用的基础设施。

  • 弹性容器实例 ECI

    阿里云弹性容器实例(Elastic Container Instance)是 Serverless 和容器化的弹性计算服务。您无需管理底层 ECS 服务器,只需要提供打包好的镜像,即可运行容器,与阿里云容器服务无缝对接并仅为容器实际运行消耗的资源付费。

  • 可观测监控Prometheus

    可观测监控 Prometheus 版作为云原生指标监控平台,完整兼容 Prometheus 开源生态,为运维工程师、SRE工程师等不同角色提供一站式指标观测平台,满足业务自定义监控 / 应用组件监控 / 云服务监控 / 容器监控 / 系统监控等场景的监控、告警需求。

创建实验资源

  1. 在实验页面,勾我已阅读并同意《阿里云云起实践平台服务协议》我已授权阿里云云起实践平台创建、读取及释放实操相关资源后,单击开始实操

  2. 创建资源需要5分钟左右的时间,请您耐心等待。

  3. 云产品资源列表,您可以查看本场景涉及的云产品资源信息。

    image

添加NAS挂载点

本实验为了实现ASK集群数据持久化并且使数据能够被多个Pod同时使用,声明PVC需使用NAS作为外部数据存储。NAS资源已经提前为您创建好,只需添加挂载点即可使用。

  1. 云产品资源列表的文件系统NAS区域,单击管理

    image

  2. 在左侧导航栏中,单击挂载使用

    image

  3. 挂载点页签,单击添加挂载点

    image

  4. 添加挂载点对话框中,参考如下说明配置参数,单击确定

    参数说明:

    • 挂载点类型:选择专有网络

    • VPC网络:选择clouder_attestation(10.0.0.0/8)

    • 交换机:选择K8S-02(10.0.1.0/24)

    • 权限组:选择VPC默认权限组(全部允许)

    image

创建ACK Serverless集群

  1. 前往容器服务管理控制台

  2. 集群列表页面,单击创建集群

    image

  3. 集群配置页面,选择ACK Serverless集群,根据如下说明配置参数,未提及的参数保持默认即可,单击下一步:组件配置

    配置项

    教程示例

    集群名称

    clouder-attestation

    地域

    选择华东1(杭州)

    专有网络

    选择使用已有,选择名称为clouder_attestationVPC。

    配置SNAT

    勾选为专有网络配置SNAT

    交换机

    勾选 K8S-01K8S-02

    安全组

    选择自动创建普通安全组

    API server 访问

    勾选使用EIP暴露API Server

    image

    image

  4. 组件配置页面,取消勾选日志服务,单击下一步:确认配置

    image

  5. 确认配置页面,确认所选配置,待依赖检查全部通过后,单击创建集群

    image

  6. 创建集群页面,单击返回集群列表

    image

  7. 集群列表页面,请您耐心等待集群创建,预计需要3~5分钟。当集群状态变为运行中时,表示集群创建成功,就可以进行后续数据持久化相关操作。

    image

通过镜像在集群中快速部署容器应用

  1. 创建存储卷(PV)和存储声明(PVC)。

    为了实现用户数据持久化存储,我们需提前定义PVPVC。PV是对存储资源的抽象,可将存储定义为一种容器应用可以直接使用的资源,而PVC定义了应用对存储资源的申请。

    1. 集群列表页面,找到目标集群clouder-attestation,单击目标集群名称,进入集群管理控制台。

      image

    2. 在左侧导航栏中,选择存储 > 存储卷

      image

    3. 存储卷页面,单击创建

      image

    4. 创建存储卷对话框中,参考如下说明配置参数,未提及的参数保持默认即可,单击创建

      参数说明:

      • 存储卷类型:选择NAS

      • 名称:输入wordpress-pv

      • 挂载点域名:选择名称为Clouder_Nas的挂载点。

      • 挂载路径:单击高级选项,输入/share/data

      说明
      • 挂载点域名如有多个选择,请选择名称为Clouder_Nas的挂载点。

      • 创建PV时挂载路径一定要设置为NAS的子目录,WordPress镜像会chown修改目录权限、属主和属组,而NAS的根目录/不允许修改权限、属主和属组,不指定子目录的话Pod会启动报错。

      image

    5. 在左侧导航栏中,选择存储 > 存储声明

      image

    6. 存储声明页面,单击创建

      image

    7. 创建存储声明对话框中,参考如下说明配置参数,未提及的参数保持默认即可,单击创建

      参数说明:

      • 存储声明类型:选择NAS

      • 名称:输入wordpress-pvc

      • 分配模式:选择已有存储卷

      • 已有存储卷:选择创建的wordpress-pv存储卷。

      image

  2. 控制台进入创建应用页面。

    ACK集群可以让我们在控制台上快速的通过使用镜像的方式创建应用,不用再编写复杂的YAML文件即可快速创建Pod、Service、PVPVC等原生Kubernetes对象。

    1. 在左侧导航栏中,选择工作负载 > 无状态

      image

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

      image

  3. 配置应用基本信息。

    1. 应用基本信息页面,参考如下说明配置参数,未提及的参数保持默认即可,单击下一步

      参数说明:

      • 应用名称:输入wordpress

      • 副本数量:设置为5

      image

  4. 容器配置。

    1. 本实验已经提前准备好了WordPress容器应用镜像,保存在ACR镜像仓库中。在镜像名称中填入如下镜像仓库地址。

      registry.cn-hangzhou.aliyuncs.com/wordpress_clouder/clouder-attestation-wordpress:v1

      image

    2. 单击镜像拉取策略下拉框,选择优先使用本地镜像(IfNotPresent),在所需资源中,设置CPU1 Core,内存为2 GB。

      image

    3. 端口设置区域中,单击新增,并配置如下参数。

      • 名称:输入tcp-80

      • 容器端口:输入80

      • 协议:选择TCP

      image

    4. 数据卷区域中,单击增加云存储声明,并配置如下参数。

      • 名称:输入wordpress-pvc

      • 挂载源:选择wordpress-pvc

      • 容器路径:输入/var/www/html

      image

    5. 配置完成后,单击下一步进入高级配置。

      image

  5. 配置容器访问。

    要使应用被外界访问,我们可以创建服务(Service)为一组具有相同功能的容器应用提供一个统一的入口地址,并且可以将请求负载分发到后端的各个容器上。

    1. 高级配置界面,单击服务右侧的创建

      image

    2. 创建服务对话框中,参考如下说明配置参数,未提及的参数保持默认即可,单击确定

      • 服务名称:输入wordpress-svc

      • 外部流量策略:选择Cluster

      • 端口映射名称:输入tcp-80

      • 服务端口:输入80

      • 容器端口:输入80

      • 协议:选择TCP

      image

    3. 高级配置界面,单击页面下方的创建

      image

  6. 生成容器。

    1. 创建完成页面,等待创建显示成功后单击查看应用详情

      image

    2. 容器组页签,等待容器组状态都为Running时,表示应用创建成功。

      image

  7. 获取应用访问地址并通过浏览器访问。

    1. 容器组页签,单击访问方式

      image

    2. 访问方式页面的服务区域中,获取外部端点

      image

    3. 在本机浏览器地址栏中,访问外部端点,即可看到WordPress初始化界面。

      image

访问集群中应用并配置相关信息

  1. 测试访问应用。

    1. 在本机浏览器地址栏中,访问外部端点,即可看到WordPress初始化界面。

      image

    2. 在这里我们稍作停留,需要先进行RDS数据库的配置,获取到数据库连接地址和账号信息,再继续进行WordPress应用的初始化。

  2. 获取RDS for Mysql相关信息。

    1. 云产品资源列表的云数据库RDS区域,单击管理

      image

    2. 在左侧导航栏中,单击账号管理

      image

    3. 用户账号页面,单击创建账号

      image

    4. 创建账号面板中,参考说明配置账号信息,单击确定

      参数说明:

      • 数据库账号:输入wpadmin

      • 账号类型:选择普通账号

      • 密码:自定义密码。

      • 确认密码:再次输入密码。

      image

    5. 在左侧导航栏中,单击数据库管理

      image

    6. 数据库管理页面。单击创建数据库

      image

    7. 创建数据库面板中,参考说明配置数据库信息,单击创建

      参数说明:

      • 数据库(DB)名称:输入wordpress

      • 支持字符集:默认设为utf8。

      • 授权账号:选择wpadmin

      image

    8. 在左侧导航栏中,单击数据库管理

      image

    9. 数据库连接页面,获取内网地址

      说明

      在左侧云产品资源列表中也可查看到RDS数据库的内网地址。

      image

  3. 配置WordPress初始化。

    1. 返回至WordPress初始化配置页签,选择简体中文,单击确定

      image

    2. 单击现在就开始

      image

    3. 在数据库配置页面,参考如下说明配置参数,单击Submit

      • 数据库名:输入wordpress

      • 用户名:输入数据库用户wpadmin

      • 密码:输入数据库用户wpadmin的密码。

      • 数据库主机:输入获取的RDS数据库内网地址。数据库内网地址也可以直接从实验页面左侧云产品资源列表中获取。

      • 表前缀:使用默认值wp_

      image

    4. 单击现在安装,配置WordPress账号信息。

      image

    5. 在账号设置页面,参考如下说明配置参数,单击Install WordPress

      • 站点标题:输入clouder_attestation

      • 用户名:输入admin

      • 密码:自定义密码。

      • 确认密码:若您设置的密码为弱密码,则需要勾选确认使用弱密码

      • 您的电子邮件:输入您的邮箱,例如username@example.com

      image

    6. 在初始化配置完成后,单击登录,进入WordPress登录页面。

      image

    7. WordPress登录页面,输入用户名密码,单击登录

      • 用户名:输入admin

      • 密码:输入用户admin的密码。

      image返回如下页面,表示您已成功登录到WordPress。

      image

在集群中查看和管理应用

  1. 集群管理功能演示。

    这一步主要进行演示与体验,目的是带您体验ACK Serverless集群管理相关的功能。通过集群页面我们可以管理集群相关信息,管理命名空间,创建工作负载,定义集群网络等。

    1. 前往容器服务管理控制台

    2. 集群列表页面,找到目标集群clouder-attestation,单击目标集群名称,进入集群管理控制台。

      image

    3. 基本信息页签,单击概览

      image

    4. 概览页签,可以查看集群中所有命名空间下应用的相关状态以及集群中的所有事件。

      image

    5. 概览页签,单击基本信息

      image

    6. 在基本信息也去,可以查看并管理集群的API Server地址,定义的Service网段及证书等等。

      image

    7. 在左侧导航栏中,单击命名空间与配额

      image

    8. 命名空间页签,可以查看并管理集群内所有的命名空间,如果想实现应用间隔离可以通过创建不同的命名空间来实现。

      image

    9. 在左侧导航栏中,选择工作负载 > 无状态

      image

    10. 无状态页面,可以管理所有部署的无状态应用,单击应用右侧操作列下的更多=,可以查看对应用的各项快速管控功能,如重新部署、弹性伸缩及回滚等。

      image

    11. 在左侧导航栏中,选择网络 > 服务

      image

    12. 服务页面,可以查看所有命名空间下的Service信息,单击更新或者查看YAML可以快速对Service进行查看修改。

      image

    ACK Serverless集群管理的更多功能可以依次查看左侧导航栏中的各标签栏进行体验。

  2. 控制台管理应用。

    容器服务提供Web控制台对部署应用及应用所涉及的K8s资源进行统一查看和管理,实现免运维应用托管,降低K8s使用和维护的门槛。本步骤通过手动删除Pod,模拟应用异常下线,来体验ACK Serverless完善的核心功能。

    1. 在左侧导航栏中,选择工作负载 > 无状态

      image

    2. 无状态页面,找到名称为wordpress的应用,单击其右侧操作列下的详情

      image

    3. 容器组页签,选择任意一个Pod最右侧操作列下的更多 > 删除

      image

    4. 删除容器组对话框中,单击确定

      image

    5. 容器组页签,单击右上方刷新图标,我们可以看到一个Pod被删除(Terminating)的同时,瞬间又拉起了一个Pod(Pending / ContainerCreating)。

      image

      此时通过访问方式页签获取的外部端点访问应用时,会发现wordpress应用还是持续可用的。

      image

    6. 等待几秒后,我们刷新页面就能看到容器组中又有5Running状态的Pod。

      image

    7. 容器组页签,单击事件

      image

    8. 事件页签,单击Pod,可以追踪到过去一段时间该应用发生变化的整个过程。

      image

  3. 查看容器日志。

    我们经常需要查看应用日志来排查追踪问题或者获取一些访问信息,可以通过控制台的日志查看功能方便快捷的对日志信息进行检索追踪,必要时还可将日志一键下载出来,不再需要通过Shell连接集群通过相关命令查看。

    1. 事件页签,单击日志

      image

    2. 日志页签,选择目标PodContainer,在该页面按下键盘上的Ctrl+F,输入搜索关键字Post,就可以看到哪些客户端通过Post请求访问了我们的站点。

      image

  4. 集群监控告警设置。

    阿里云Prometheus监控全面对接开源Prometheus生态,支持类型丰富的组件监控,提供多种开箱即用的预置监控大盘,且提供全面托管的Prometheus服务。

    1. 在左侧导航栏中,选择运维管理 > Prometheus监控

      image

    2. Prometheus监控页面,单击开始安装

      image

    3. 请您耐心等待自动安装组件和检查监控大盘(可能需要等待几分钟时间),直到检查监控大盘显示完成可刷新页面进入监控大盘。

      image

    4. 初次进入Prometheus监控页面,如果没有正常数据显示,刷新页面即可。

      image

    5. Prometheus监控页面,可以查看集群、集群组件及应用各项监控。在本实验中,选择应用监控 > 无状态应用监控Namespace选择defaultDeployment选择wordpress,即可查看wordpress应用的各监控项。

      image

清理资源

  • 在完成实验后,如果无需继续使用资源,请根据以下步骤,先删除Prometheus监控服务实例和ACK Serverless集群,再结束实操。

    重要

    如果无需继续使用资源,请一定要先删除Prometheus监控服务实例和ACK Serverless集群后再结束实操,否则还会继续进行计费。

    • 删除Prometheus监控服务实例。

      1. 单击前往Prometheus监控服务控制台

      2. 在实例列表页面,找得到clouder-attestation实例,单击其右侧操作列下的卸载

        image

      3. 提示对话框中,单击确认

        image

    • 删除ACK Serverless集群。

      1. 前往容器服务管理控制台

      2. 集群列表页面,找到clouder-attestation集群,选择其右侧操作列下的更多 > 删除

        image

      3. 删除集群clouder-attestation及关联资源面板,选择集群关联的所有资源,单击删除

        image

      4. 确认删除集群对话框中,输入集群名称,勾选我已知晓以上信息并确认删除集群,单击确定删除

        image

      5. ACK Serverless资源删除需要耗时3~5分钟,请务必等资源删除完成后再结束实验。

        image

    • 删除相关资源后,选择不保留资源,单击结束实操。在结束实操对话框中,单击确定

      image

  • 在完成实验后,如果需要继续使用资源,选择付费保留资源,单击结束实操。在结束实操对话框中,单击确定。请随时关注账户扣费情况,避免发生欠费。

    image