在ACK Serverless集群中通过Knative实现弹幕服务
csk
手动配置
35
教程简介
ACK Serverless集群是阿里云推出的无需购买节点即可部署工作负载的Kubernetes容器服务。无需在ACK Serverless集群中管理和维护节点,无需容量规划,降低业务的基础设施管理和运维成本。ACK Serverless集群的秒级伸缩能力、根据应用配置的CPU和内存资源量按需、按量付费能力,降低业务的计算成本,尤其是有明显波峰波谷的业务。ACK Serverless集群提供完善的Kubernetes兼容能力,同时降低Kubernetes使用门槛,让您无需管理底层基础设施,更加专注于应用程序。
在本教程中,系统自动生成ACK Serverless集群,提供业务运行环境。您通过前端发送弹幕消息到HomePage,然后HomePage将弹幕信息发送到消息处理进行加工。加工完成后,页面将展示前端获取的弹幕结果。
我能学到什么
学会如何一键部署Knative。
学会如何在ACK Serverless(原ASK)上通过Knative部署弹幕服务。
操作难度 | 中 |
所需时间 | 35分钟 |
使用的阿里云产品 | |
所需费用 | ACK Serverless集群:0元 弹性公网EIP计费:0.020元/小时。计费信息,请参见EIP计费。 其它云资源首月减免额度如下: 个人账号: 计算资源ECI:317.57元(每小时抵扣≤1.76元) 网络资源CLB:0.735元 企业账号: 计算资源ECI:952.71元(每小时抵扣≤5.28元) 网络资源CLB:0.735元 关于ACK Serverless(原ASK)试用集群费用减免信息,请参见下文的试用前说明。 |
试用前说明
ACK Serverless(原ASK)试用集群减免额度以节省计划形式发放到账户,实际消耗会因应用部署、网络环境等变化。无需使用时,请务必注意及时关闭或者删除资源,避免额外资损。
ACK Serverless(原ASK)试用集群减免的费用
ACK Serverless(原ASK)试用集群由计算资源弹性容器实例ECI和网络资源负载均衡CLB组成,个人账号和企业账号对应这两部分资源的免费额度如下。
个人账号
资源类别 | 免费地域 | 对应规格 | 总免费额度 | 备注 | 标准计费文档 |
弹性容器实例ECI |
| 按vCPU和内存计费 | 2023年06月09日之后的抵扣规则:
|
| 按vCPU和内存计费。更多信息,请参见ECI实例计费。 |
2023年06月09日之前的抵扣规则:
|
| ||||
网络资源负载均衡CLB | 不涉及 | 私网CLB |
| 在默认低消耗情况下,15 LCU的流量可供ACK Serverless集群的APIServer使用30天。但具体可用时长还与您实际应用部署情况相关,可能有所波动。 | 按使用量计费。更多信息,请参见按量付费。 |
企业账号
资源类别 | 免费地域 | 对应规格 | 总免费额度 | 备注 | 标准计费文档 |
弹性容器实例ECI |
| 按vCPU和内存计费 | 2023年06月09日之后的抵扣规则:
|
| 按vCPU和内存计费。更多信息,请参见ECI实例计费。 |
2023年06月09日之前的抵扣规则:
|
| ||||
网络资源负载均衡CLB | 不涉及 | 私网CLB |
| 在默认低消耗情况下,15 LCU的流量可供ACK Serverless集群的APIServer使用30天。但具体可用时长还与您实际应用部署情况相关,可能有所波动。 | 按使用量计费。更多信息,请参见按量付费。 |
实际使用情况可能与应用部署、网络环境等情况有关, 请随时关注这两个资源节省计划的账单抵扣余额。
问题1:如何查看节省计划账单余额?
登录阿里云账号,在顶部菜单栏,选择费用 > 费用与成本。
在左侧导航栏,选择账户 > 节省计划。
在总览页签,找到ACK Serverless(原ASK)免费试用集群的ECI和CLB的免费额度,横向拖动滚动条查看两者的剩余金额。
问题2:如果使用同类资源,账单如何抵扣?
ACK Serverless(原ASK)试用集群的免费额度以弹性容器实例ECI的节省计划和负载均衡CLB的节省计划形式发放到您的账号中。如果您持有或者新创建同类型资源,对应账单的节省计划中会一并抵扣。这种情况下,请务必注意及时关闭或者删除资源,避免额外资损。
ACK Serverless(原ASK)试用集群不会减免的费用
集群创建完成后,如果您在ACK Serverless集群上增加或开通其他云服务,就需要为您使用的这些云资源付费。本教程默认不开通以下资源。请务必注意及时删除资源,避免额外资损。关于查看账单的具体操作,请参见查看账单。
相关云资源计费信息如下表所示。
资源类别 | 资源使用说明 | 收费详情 |
传统型负载均衡CLB(按规格计费) | CLB通过设置虚拟服务地址,将添加的同一地域的多台云服务器虚拟成一个高性能和高可用的后端服务池,并根据转发规则,将来自客户端的请求分发给后端服务器池中的云服务器。 | CLB分为两种模式,按使用量计费(LCU)或按规格计费。后者按照规格计费的CLB并不包含在免费试用抵扣包内。最小规格的公网CLB计费为0.12元/小时起。关于收费详情,请参见CLB计费概述。 |
应用型负载均衡ALB | 支撑Ingress,对多台云服务器进行流量分发。更多信息,请参见Ingress概述。 | ALB由实例费和LCU费两部分组成,其中ALB有免费计划,您可以在免费试用中心尝试领取。关于收费详情,请参见ALB计费概述。 |
MSE云原生网关 | 支撑Ingress,与ALB二选一。 | 云原生网关实例有后付费(按量计费)和预付费(包年包月)两种计费模式,计费包含实例规格(CPU和内存)和节点数。其中MSE有免费计划,您可以前往免费试用中心尝试领取。关于收费详情,请参见MSE计费概述。 |
Prometheus | 容器CaaS层或Pod指标监控。 |
|
弹性公网EIP | 公网IP。可以单独使用,也可与私网负载均衡SLB或者SNAT绑定使用。 | 其中EIP有免费计划,您可以前往免费试用中心尝试领取。关于收费详情,请参见EIP计费概述。 |
SNAT | ACK Serverless集群公网流量的出口, 如果Pod中的应用需要访问公网。例如,使用高德API、文字识别调用OCR。 | SNAT由实例费和CU费两部分组成。关于收费详情,请参见SNAT计费概述。 |
容器镜像服务ACR | 容器化应用的镜像存放管理,提供镜像的安全托管和高效分发。 | 包含个人版和企业版两种规格,其中ACR个人版有免费计划,您可以前往免费试用中心尝试领取。关于ACR企业版收费详情,请参见ACR企业版实例计费说明。 |
CNFS(文件存储) | 文件存储NAS适用于频繁修改的数据,需要极致弹性快速扩大或收缩容量,多个容器实例Pod共享数据。 | CPFS会根据您存储的类型、大小、时长收取费用。关于收费详情,请参见CPFS计费说明。 |
云盘(块存储) | 块存储适用于低延时、适用于数据库等数据规模不大的结构化数据场景,独占的裸数据块,不提供跨主机容器的数据共享。 | 云盘支持按量付费和SCU付费方式。关于收费详情,请参见块存储计费和存储容量单位包SCU概述。 |
OSS(对象存储) | 对象存储适用于多媒体、海量视频图片等非结构化数据,无需高性能分析和修改编辑,更低价格存储数据,REST API直接访问海量存储资源。 | OSS支持按量付费、资源包和SCU付费方式。其中OSS有免费计划,您可以前往免费试用中心尝试领取。关于收费详情,请参见OSS计费概述。 |
准备环境和资源
10
开始教程前,请按以下步骤准备环境和资源:
访问阿里云免费试用。单击页面右上方的登录/注册按钮,并根据页面提示完成账号登录(已有阿里云账号)、账号注册(尚无阿里云账号)或实名认证(根据试用产品要求完成个人实名认证或企业实名认证)。
成功登录后,在产品类别下选择容器 > 容器服务 Serverless 版,按需选择ACK Serverless集群的个人版或企业版试用规格,单击立即试用。
ACK Serverless(原ASK)试用集群仅限实名认证的弹性容器实例ECI的新用户领取,每个用户仅限领取一次。本教程以使用个人账号的2核 4 GB的弹性容器实例ECI为例进行说明。使用企业账号的操作步骤类似。
在容器服务 Serverless 版面板,在服务协议右侧,单击已完成服务角色的授权链接或访问授权页面,然后单击同意授权,完成ACK Serverless(原ASK)试用集群的授权操作。
返回容器服务 Serverless 版面板,选择任一地域,本教程以华北2(北京)地域为例,其他配置项保持默认。仔细阅读各服务协议,并选中服务协议选框,然后单击立即试用。
试用申请成功通过后,系统将会为您自动创建ACK Serverless集群基础版。您可以前往容器服务 Serverless 版控制台进行后续操作。集群创建大约需要3分钟,当集群状态为运行中时,即可正常使用。
安装CoreDNS
3
登录容器服务管理控制台,在左侧导航栏选择集群。
在集群列表页面,单击目标集群进入集群信息页面,然后在左侧导航栏,选择运维管理 > 组件管理。
在组件管理页面,单击网络页签,找到CoreDNS,然后单击卡片右下角的安装。
在弹出的安装组件 CoreDNS面板中,设置如下内存和CPU配置项,其他配置项保持默认值,然后单击确定。
MemoryRequest 内存需求:512M。
CpuRequest CPU需求:500m。
一键部署Knative
5
在集群列表页面,单击目标集群进入集群信息页面,然后在左侧导航栏,选择应用 > Knative。
在Knative页面,单击组件管理页签,然后单击一键部署Knative。
在部署 Knative页面,选择服务网关为Kourier,然后单击一键部署。
当部署 Kourier和部署 Serving的状态变为成功时,表明Knative一键部署成功。
部署消息处理服务和HomePage
5
消息处理用于接收弹幕请求,并根据请求数进行自动扩缩容。HomePage用于发送和接收弹幕消息。部署消息处理服务和HomePage操作步骤如下。
在Knative页面,单击服务管理页签,然后单击使用模板创建。
在示例模板下拉列表中,选择自定义,将右侧消息处理服务的YAML示例粘贴至模板,然后单击创建。
默认创建一个名为danmu-message的服务。示例代码中的
image
需根据集群所在地域进行替换。本教程以华北2(北京)地域为例进行创建,请根据不同地域替换代码中的image
。华东1(杭州):registry-vpc.cn-hangzhou.aliyuncs.com/acs/knative-danmu-message:v1.0
华南1(深圳):registry-vpc.cn-shenzhen.aliyuncs.com/acs/knative-danmu-message:v1.0
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: danmu-message namespace: default spec: template: metadata: annotations: autoscaling.knative.dev/maxScale: "10" autoscaling.knative.dev/minScale: "1" spec: containerConcurrency: 2 containers: - args: - /message - --url=http://danmu-portal.default.svc.cluster.local/api/result env: - name: POD_NAME valueFrom: fieldRef: fieldPath: metadata.name image: registry-vpc.cn-beijing.aliyuncs.com/acs/knative-danmu-message:v1.0 name: user-container ports: - containerPort: 8080 name: http1
重复执行上一步。清空模板内容,将右侧HomePage的YAML示例粘贴至新的空白模板,然后单击创建。
默认会创建一个名为danmu-portal的服务。示例代码中的
image
需根据集群所在地域进行替换。本教程以华北2(北京)地域为例进行创建,请根据不同地域替换代码中的image
。华东1(杭州):registry-vpc.cn-hangzhou.aliyuncs.com/acs/knative-danmu-portal:v1.0
华南1(深圳):registry-vpc.cn-shenzhen.aliyuncs.com/acs/knative-danmu-portal:v1.0
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: danmu-portal namespace: default spec: template: metadata: annotations: autoscaling.knative.dev/maxScale: "1" autoscaling.knative.dev/minScale: "1" spec: containers: - image: registry-vpc.cn-beijing.aliyuncs.com/acs/knative-danmu-portal:v1.0 name: user-container args: - /danmu - --url=http://danmu-message.default.svc.cluster.local/web/api/process ports: - containerPort: 8080 name: http1
在服务管理页签,当danmu-message和danmu-portal的状态变为成功时,表明消息处理服务和HomePage部署成功。
记录此处访问网关的IP地址,在下一步操作中使用。
绑定访问网关地址和域名
2
消息处理服务和HomePage部署完成后,需要将上一步记录的访问网关地址绑定到待访问的用于发送和接收弹幕消息的HomePage的域名danmu-portal.default.example.com
。
找到计算机中Hosts文件所在位置,然后在Hosts文件中添加绑定信息,具体格式为访问网关+空格+域名,例如,47.96.XX.XX danmu-portal.default.example.com
,然后通过域名直接对服务进行访问。不同操作系统Hosts绑定方法如下。
Windows系统Hosts绑定方法(需要管理员权限操作)
打开我的电脑,在地址栏输入
C:\WINDOWS\system32\drivers\etc
即可跳转至etc文件目录,找到Hosts文件。使用记事本方式打开Hosts文件,在记事本最后一行添加
47.96.XX.XX danmu-portal.default.example.com
,然后保存文件。
Mac系统Hosts绑定方法
在桌面顶部菜单栏,选择前往>前往文件夹,然后输入
/private/etc
,单击回车。找到Hosts文件,将其复制到桌面上进行修改。
右键打开桌面上的Hosts文件,选择打开文件的应用程序,然后单击文本编辑。
在Hosts文件最后一行添加
47.96.XX.XX danmu-portal.default.example.com
,编辑完成后,将桌面的Hosts文件复制到/private/etc
文件夹替换原有Hosts文件即可。
完成
5
完成以上操作后,在浏览器输入域名http://danmu-portal.default.example.com
直接访问弹幕服务。在访问页面设置如下弹幕的参数,然后单击发送消息,查看弹幕信息。
配置项 | 说明 | 示例 |
消息 | 具体发送的消息。 | welcome |
并发 | 弹幕消息的并发数。 | 20 |
持续 | 弹幕消息的持续时间,单位为秒。 | 30 |
此弹幕服务仅用于个人测试,不推荐将域名分享给多人进行发送弹幕。多人发送弹幕会消耗更多资源,可能会超出试用额度,产生额外费用。
清理及后续
5
ACK Serverless(原ASK)试用集群有效期限为1个月,试用到期后,由于ACK Serverless集群目前处于公测中,可继续免费试用,但在使用ACK Serverless集群过程中用到的其他阿里云云产品资源会产生相关费用。您可以根据自己的需求释放资源或进行续费。
清理
如果无需继续使用集群,请登录容器服务管理控制台,在集群列表页面的操作列,单击目标集群对应的更多 > 删除。在删除集群页面,选中同时删除集群下的ALB资源、同时删除集群下的PrivateZone资源和我已知晓以上信息并确认删除集群,然后单击确定。关于删除ACK Serverless集群的更多信息,请参见删除集群。
如果需要继续使用集群,请至少在试用期到期1小时前为阿里云账号充值,确保账户金额不小于100.00元人民币。在使用ACK Serverless集群过程中会用到其他的阿里云云产品资源。相关计费说明,请参见云产品资源计费。
后续
在ACK Serverless集群免费试用期间,您还可以体验在ACK Serverless集群中创建应用等。具体操作,请参见ACK Serverless使用快速入门。
总结
常用知识点
问题1:消息处理服务和HomePage部署完成后,需要记录哪个信息?(单选题)
默认域名
访问网关IP
正确答案是访问网关IP。将访问网关和待访问的HomePage的域名进行绑定之后,才能访问弹幕服务。
问题2:ACK Serverless(原ASK)试用集群会为哪些资源提供一定的免费额度?(单选题)
弹性容器实例ECI和负载均衡CLB
容器镜像服务ACR和负载均衡ALB
正确答案是弹性容器实例ECI和负载均衡CLB。ACK Serverless(原ASK)试用集群由计算资源弹性容器实例ECI和网络资源负载均衡CLB组成,并为个人账号和企业账号提供一定的免费额度。