容器服务ACK+容器网络文件系统CNFS快速搭建NGINX网站(体验有礼)

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器镜像服务 ACR,镜像仓库100个 不限时长
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 本文介绍如何在半小时内,通过阿里云容器ACK服务和容器网络文件系统CNFS服务搭建一个简单的弹性、高可用NGINX网站。在完成本文的所有操作后,您将获得一个单网页的网站,用户的请求将会被打散到多个容器节点上,并且根据业务负载自动扩缩容,即使某个容器节点宕机也不会影响用户访问。另外您还可以将本地编辑的网页快速更新到网站上。

介绍如何在半小时内,通过阿里云容器ACK服务和容器网络文件系统CNFS服务搭建一个简单的弹性、高可用NGINX网站。,11 月 9 日至 11 月 23 日期间,完成部署即可获得“TOMY 多美卡合金车模一辆”。

O1CN019If3vm1vDFjunR9QE_!!2921416138-0-cib.jpg

地址:https://developer.aliyun.com/adc/series/activity/1111

体验目标

本文介绍如何在半小时内,通过阿里云容器ACK服务和容器网络文件系统CNFS服务搭建一个简单的弹性、高可用NGINX网站。在完成本文的所有操作后,您将获得一个单网页的网站,用户的请求将会被打散到多个容器节点上,并且根据业务负载自动扩缩容,即使某个容器节点宕机也不会影响用户访问。另外您还可以将本地编辑的网页快速更新到网站上。

背景知识

本教程使用到的云产品如下:

云服务器ECS

云服务器(Elastic Compute Service,简称ECS)是阿里云提供的性能卓越、稳定可靠、弹性扩展的IaaS(Infrastructure as a Service)级别云计算服务。云服务器ECS免去了您采购IT硬件的前期准备,让您像使用水、电、天然气等公共资源一样便捷、高效地使用服务器,实现计算资源的即开即用和弹性伸缩。阿里云ECS持续提供创新型服务器,解决多种业务需求,助力您的业务发展。

文件存储NAS

阿里云文件存储(Network Attached Storage,简称 NAS)是面向阿里云 ECS 实例、E-HPC 和容器服务等计算节点的文件存储服务。NAS 提供了简单的可扩展文件存储以供与 ECS 配合使用,多个ECS实例可以同时访问 NAS 文件系统,并且存储容量会随着您添加和删除文件而自动弹性增长和收缩,为在多个实例或服务器上运行的工作负载和应用程序提供通用数据源。

容器服务Kubernetes版

阿里云容器服务Kubernetes版ACK(Alibaba Cloud Container Service for Kubernetes)是全球首批通过Kubernetes一致性认证的服务平台,提供高性能的容器应用管理服务,支持企业级Kubernetes容器化应用的生命周期管理,让您轻松高效地在云端运行Kubernetes容器化应用。

容器网络文件系统CNFS

传统的共享文件系统存在缺少容量配额的精确控制、无法恢复误删文件、缺失存储卷容量性能等监控指标、无安全加密及小文件读写延迟等问题。阿里云容器服务ACK推出了容器网络文件系统CNFS提升NAS文件系统的性能,QoS控制。阿里云容器服务使用容器网络文件系统CNFS(Container Network File System),将阿里云的文件存储抽象为一个K8s对象(CRD)进行独立管理,包括创建、删除、描述、挂载,监控及扩容等运维操作。

本教程七个步骤,完成前六个步骤即可实现弹性高可用的NGINX网站,最后两个步骤验证网站的弹性和高可用属性。

步骤一:创建资源
步骤二:挂载文件系统NAS到ECS服务器
步骤三:上传文件到NAS
步骤四:使用CNFS托管NAS文件系统
步骤五:创建NGINX应用
步骤六:访问测试网站
步骤七:验证服务高可用
步骤八:验证弹性扩缩容
网站整体架构如下图:

请添加图片描述

体验准备

体验需使用自己的账户开通以上服务
ECS资源地址

挂载文件系统NAS到ECS服务器

阿里云文件存储NAS是一个可共享访问,弹性扩展,高可靠,高性能的分布式文件系统。它可以为容器提供持久化的存储服务。在接下来的操作里,您的网页文件将会被保存在NAS文件系统中,当容器pod被创建后即可直接调用NAS里的文件,并且在pod被销毁后,NAS里的文件也会继续留存。

1.双击打开虚拟桌面的Firefox ESR浏览器,在RAM用户登录框中点击“下一步”,复制云产品资源列表中子用户密码,粘按CTRL+V把密码粘贴到密码输区,登陆子账户(后续在远程桌面里的粘贴操作均使用CTRL + V快捷键)。
2.复制以下NAS文件系统控制台地址,在FireFox浏览器打开新页签,粘贴并访问NAS文件系统控制台。
https://nasnext.console.aliyun.com/
3.在概览页面中,单击文件系统>文件系统列表。

4d826b454ced4424aafb6820e6424330.png

4.在文件系统列表页面,切换到资源所在地域。
说明 :

参考如下图片切换地域到华北2(北京)。

0eec68fe8e544b40bbd512ed3c81d004.png

5.在文件系统列表页面,单击目标NAS实例文件系统ID。
427a32e34090489f99157a8c94cf8a97.png

6.在文件系统详情页,单击挂载使用。

7d432c0160af4d398d4f607464734de9.png

7.在挂载使用页签, 单击目标挂载点操作列的挂载。
828dcc17c4fd428eb44a75feef57ad51.png

8.在挂载到ECS对话框,ECS实例选择云产品资源列表中的ECS实例,挂载路径设置为/mnt,单击挂载。

a0a50ca8846d4264b9dda23af90ec283.png

返回如下页面,待挂载状态为已挂载,表示NAS已成功挂载到ECS上。
c288751f52a74033887acdb0ad929bff.png

上传文件到NAS

使用ACK集群搭建NGINX服务后,在您打开网站首页时,容器就会从NAS文件系统中读取这一步上传的网页文件,返回给浏览器。在网站搭建完成后,您可以通过同样的方法更新NAS里的文件。

1、点击浏览器右侧 ,切换至Web Terminal。

2、输入以下命令,创建并上传index.html文件至Nas。

echo "test index page for nginx-nas-demo" > /mnt/index.html

3、 输入以下命令,在/mnt目录中查看刚上传的index.html文件。

ls /mnt
cat /mnt/index.html

TB1ULZ6ktTfau8jSZFwXXX1mVXa-1076-174.png

使用CNFS托管NAS文件系统

传统的共享文件系统存在缺少容量配额的精确控制、无法恢复误删文件、缺失存储卷容量性能等监控指标、无安全加密及小文件读写延迟等问题。容器网络文件系统CNFS提升NAS文件系统的性能,QoS控制。

要使用ACK服务挂载使用NAS,需要先配置容器存储卷PV和存储声明PVC信息,这些信息将会在您部署NGINX应用的时候用到。

使用已有的NAS文件系统创建CNFS。
1)点击体验实验室右侧图标,切换到远程桌面操作界面。

2)复制容器服务ACK控制台地址,在FireFox浏览器打开新页签,粘贴并访问容器服务ACK控制台。

https://cs.console.aliyun.com/
3)在集群列表页面中,单击目标集群名称。

c0c6988847264271b5c926d82adbb299.png

4)在集群信息页面中,单击通过CloudShell管理集群。
c6bda267e07c464aa97632b4b8239870.png

返回如下页面,代表你已打开CloudShell。

31f01698a5584262a82e1513cb1634ba.png

5)在在虚拟桌面左下角,单击 图标。

0ef72d02a7384c9bb298983298c69048.png

6)在菜单栏中,单击附件>Mousepad。
013e7b9f5e05441d82d11506b83d0340.png

返回如下页面,表示你已成功打开Mousepad。

bebde41c60434292964d87734d36a6a4.png

7)复制如下命令,粘贴到Mousepad。在Mousepad中将命令的parameters.server参数替换成您的NAS的挂载点URL地址,然后复制Mousepad中的所有命令。

注意:

parameters.server参数需要替换成您的NAS的挂载点URL地址。NAS的挂载点URL地址可以通过NAS文件系统控制台>文件系统列表>目标NAS>挂载使用>通过命令行挂载到ECS>挂载NFS文件系统中的sudo mount的参数中查到。

当NAS文件系统存在时,加载已创建的NAS文件系统

cat <<EOF | kubectl apply -f -
apiVersion: storage.alibabacloud.com/v1beta1
kind: ContainerNetworkFileSystem
metadata:
  name: cnfs-nas-filesystem
spec:
  description: "cnfs"
  type: nas
  reclaimPolicy: Retain
  parameters:
    server: 17f7e4****-hlm35.cn-beijing.nas.aliyuncs.com
EOF

8)在CloudShell中,右键粘贴,将Mousepad中的命令粘贴到CloudShell,然后执行。

8e9eb574e6154e0c9624c8f8af1fa8a9.png
9)复制如下命令,在CloudShell中,右键粘贴并执行,查看详细信息。

kubectl get cnfs/cnfs-nas-filesystem -o yaml

d1bd9f1d1c87492bb94be2ae877c0045.png
2.复制如下命令,在CloudShell中,右键粘贴并执行,通过创建动态PV绑定NAS文件系统。

cat <<EOF | kubectl apply -f -
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: alibabacloud-nas-cnfs
mountOptions:
  - nolock,tcp,noresvport
  - vers=3
parameters:
  volumeAs: subpath
  containerNetworkFileSystem: cnfs-nas-filesystem
  path: "/"
provisioner: nasplugin.csi.alibabacloud.com
reclaimPolicy: Retain
allowVolumeExpansion: true
EOF

3.复制如下命令,在CloudShell中,右键粘贴并执行,创建存储声明PVC信息。

cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: cnfs-nas-pvc
spec:
  accessModes:
    - ReadWriteMany
  storageClassName: alibabacloud-nas-cnfs
  resources:
    requests:
      storage: 70Gi
EOF

4.在CloudShell上方菜单栏中,单击 图标,关闭CloudShell。

14cd13ab09924c88b30cea922871d26d.png

5.在切换回容器服务ACK控制台页面。在左侧导航栏中,单击存储>存储卷。

9a1b2070c44346b9979d79e74e4f33e2.png

返回如下页面,表示PV创建成功。

41cd42b3a2fc478cac41569530ebf310.png

6.在存储卷页面左侧控制台,单击存储>存储类。

3beda41145ea4ebbb420452d8ba365e1.png

返回如下页面,表示PVC创建成功。

ef1c8b21d1b14f65a6e4a98b23ca3c98.png

7.点击浏览器右侧,切换至Web Terminal。

8.执行如下命令,进入mnt目录。

cd /mnt

acf012e6730f476884c67fd3aefc1bdf.png

9.执行如下命令,查看mnt目录。

ls

db9047aa871e40689dca9be68c0926d0.png
10.将如下命令中的/nas-xxxxx替换成您的mnt目录下的存储卷名称,然后执行,将index.html移动到此目录下。

mv index.html nas-xxxxx

031068123b1d472bbf314a4458ac574d.png

创建NGINX应用

1点击体验实验室右侧图标,切换到远程桌面操作界面。
2在存储类页面左侧控制台,单击工作负载>无状态。
1604a5f7c43743a38e5ff988ed6dbecb.png

3在无状态页面,单击使用镜像创建。
6e894e86277c4ee2b8c7e28bb2d888fc.png

4在应用基本信息页签,设置应用名称为nginx-nas,单击下一步。

9830f2a3d04b47b99106e2e94594a147.png

5在容器配置页签,完成以下配置。
1)在基本配置区域,单击选择镜像。

125b5a6fb79646539193878004088928.png

2)在镜像选择对话框中,单击搜索,选择Docker镜像,在搜索框中输入nginx,单击搜索。
824bb662efa6405e8509b1b965edb3e4.png

3)在镜像选择对话框中,单击nginx镜像,然后单击确定。

510da2124ecd4321957fba78abbc128c.png

4)在数据卷区域,单击增加云存储声明(PersistentVolumeClaim),挂载源选择为步骤二中创建的存储声明(即cnfs-nas-pvc),容器路径设置为/usr/share/nginx/html/。在配置概述区域,单击下一步。

说明 :

数据卷配置会将NAS挂载到容器的/usr/share/nginx/html/路径,也就是NGINX默认存放index.html的目录。

7a34bd8315564a7ca405e9d238583a34.png
24896d6542b64771b249fb05a4250bdc.png

6在高级配置页签,完成以下配置。
1)在访问设置区域,单击服务(Service)右侧的创建。

8e4f88ac8876410f818c420a88a8d7c7.png

2)在创建服务对话框的端口映射配置中,名称设置为http,服务端口设置为80,容器端口设置为80,其他选项保持默认值,单击创建。

注意 :

名称http必须全部小写,否则会创建失败。

8397e3fea6f047b7af82102976812d55.png

3)在访问设置区域,单击路由(Ingress)右侧的创建。

3ed60fcca10b446b82ba136adc7a645a.png

4)在创建对话框的规则配置中,设置域名和名称,其他选项保持默认值,单击创建。

参数说明:

域名:您的网站域名,例如:foo.bar.com。
说明 :

如果您没有域名,可以先随意填写一个测试域名即可。

名称:选择上一步创建的nginx-nas-svc服务。
017b29d2700c45c5b683f449da039f8b.png

路由创建完成后,您可以看到路由一栏应该显示域名与对应服务的信息。路由功能会将用户请求通过简单扇出的方法,打散到多个容器节点上进行处理。

098c9f701ef94ef4bc21c8a8a17be4c2.png

5)在伸缩配置区域,单击指标伸缩的开启,最小副本数设置为2,最后单击最下方的创建。

e3c54c5974774e668643522a9fc4fd7f.png

7在高级配置页签下方,单击创建。

72419bdb24604740a6f9ed997f9d9b37.png

返回如下页面,等待所有应用任务创建状态为成功,表示您的应用已经创建完成。
3ec7595c06e7406eaa6b390546189ebd.png

访问测试网站

等待NAS和容器的配置完成后,您就可以使用本地电脑访问测试网站了。

配置办公电脑的hosts文件。
说明:

如果您在NGINX应用配置中,使用的是正式网站域名,并且已经通过备案,您就可以跳过这个步骤,直接通过浏览器打开网站。如果您使用的是测试域名(例如foo.bar.com),那么就需要在本地电脑上配置hosts文件,让浏览器把对域名的请求转到ACK集群的IP地址上。

1.在创建完成页签中,单击查看应用详情。
fce5fbd743a54e788af4a040cb8ae75b.png

2)在应用详情页面,单击访问方式。
9668adb7d8b349ce9a21e3f591bd872f.png

3)复制路由的端点IP地址到粘贴板,这个IP地址就是公网访问网站使用的IP地址。c2d5c44cfebe44d09b06dadade1b9ff5.png

4)使用管理员权限打开您本地的C:\Windows\System32\drivers\etc\hosts文件,将端点IP和步骤五中设置的域名(例如foo.bar.com)加入hosts文件,然后保存退出,如下图所示。

说明 :

如果您本地机器是Linux和Mac系统,请修改/etc/hosts文件。

d5b1126ef2114e35a7b320e348755cc2.png

  1. 使用浏览器打开网站。

说明 :

如果您不能正常访问,您可以尝试清空浏览器缓存,或者使用无痕浏览模式访问。

84653ffa1d7e4fa9a1eb850001005b8f.png

验证服务高可用

因为部署NGINX应用的时候,选择了容器组最小副本数为2,所以在一台容器宿主节点宕机的情况下,网站仍然可以由另一台容器宿主节点提供服务,保证了服务的高可用特性。

1、模拟节点故障。

1)切换回容器服务ACK控制台页面。在左侧导航栏中,单击节点管理>节点。

66b5cd7508c04c708c20b2384a2de992.png

2)节点页面,选择任意2个节点,然后单击下面操作栏排水/设置不可调度。
55b2714248cc4d79a3f9e9bb22186325.png

3)在水/设置不可调度对话框中,勾选排空节点,然后单击确定。
91b3b207855f48b58ba661900653f65e.png

此时,可以看到节点状态为不可调度。

1c0b98323c9741da8cdf51085f092650.png

4)使用本机浏览器打开网站,发现仍然可以正常访问。

836235033c434fb68101dbaf5b6d9c54.png

2、 恢复节点。

1)单击下面操作栏节点上线在弹出的对话框单击确定。

2)使用浏览器打开网站,发现仍然可以正常访问。

TB16pjsZaL7gK0jSZFBXXXZZpXa-708-218.png

验证弹性扩容

  1. 查看容器组初始状态。

1)在节点页面左侧导航栏中,单击无状态。

6ecf1450825e43f5938aedc0282230e5.png

2)在无状态页面,单击应用名称。

caed8e392472413fae0e9d9a49105b6e.png

3)在应用详情页面,单击容器伸缩。

0188a1ccd6a7410db554b15cc9224ade.png

返回如下页面,您可以查看当前副本数和容器组当前当前CPU使用率。

6b31d9735a344202ae89588d72c7a03a.png

  1. 模拟容器高负载。

1)在容器伸缩页签的左侧导航栏中,单击集群信息

a90da44ee80f4e929edc1834012d6e60.png

2)在集群详情页面,单击通过CloudShell管理集群。
TB1fsgRkCslXu8jSZFuXXXg7FXa-1922-889.png

3)复制如下命令,在CloudShell中,右键粘贴并执行,执行以下命令查看节点。

kubectl get pod

TB1g3..iNvbeK8jSZPfXXariXXa-524-69.png

4)复制如下命令,在CloudShell中,右键粘贴并执行,进入容器。

kubectl exec -it lalala-***pod-name****-kxjbg bash

5)复制如下命令,在CloudShell中,右键粘贴并执行,模拟容器高负载。

fulload() { dd if=/dev/zero of=/dev/null | dd if=/dev/zero of=/dev/null | dd if=/dev/zero of=/dev/null | dd if=/dev/zero of=/dev/null & }; fulload; read
  1. 确认自动扩容。

1)在集群详情页面左侧导航栏中,单击无状态。

17a6dbefb52d4617adfb926a2701ca0e.png

2)在无状态页面,单击应用名称。
90eadd243ff0490f98fe8d139dfb3ff7.png

3)在应用详情页面,单击容器伸缩。
97ef3ab9055c46f6a3bcdee2dd11987e.png

4)稍等一点时间,您可以看到当前CPU使用率明显升高。

d8f4e0900e974b478899e66ff9a7a33d.png

等待几分钟后再次查看,发现当前副本数已经变为10。
TB1SIcRkCslXu8jSZFuXXXg7FXa-1714-242.png

c. 此时,使用浏览器打开网站,发现仍然可以正常访问。

TB1npcroDM11u4jSZPxXXahcXXa-708-218.png

  1. 解除容器高负载。

a. 进入CloudShell命令行。

b. 在命令行中执行以下命令。

# 退出容器
exit
# 删除
kubectl delete pod lalala-***pod-name****-kxjbg
  1. 确认自动缩容。

单击容器组水平伸缩器查看当前副本数和容器组当前当前CPU使用率。

可以看到CPU使用率和副本数明显下降。

TB1UfrqZeH2gK0jSZJnXXaT1FXa-1919-702.png

相关实践学习
巧用云服务器ECS制作节日贺卡
本场景带您体验如何在一台CentOS 7操作系统的ECS实例上,通过搭建web服务器,上传源码到web容器,制作节日贺卡网页。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
6月前
|
缓存 Kubernetes Docker
容器服务ACK常见问题之容器服务ACK ingress websocket配置失败如何解决
容器服务ACK(阿里云容器服务 Kubernetes 版)是阿里云提供的一种托管式Kubernetes服务,帮助用户轻松使用Kubernetes进行应用部署、管理和扩展。本汇总收集了容器服务ACK使用中的常见问题及答案,包括集群管理、应用部署、服务访问、网络配置、存储使用、安全保障等方面,旨在帮助用户快速解决使用过程中遇到的难题,提升容器管理和运维效率。
|
2月前
|
运维 Kubernetes 调度
阿里云容器服务 ACK One 分布式云容器企业落地实践
3年前的云栖大会,我们发布分布式云容器平台ACK One,随着3年的发展,很高兴看到ACK One在混合云,分布式云领域帮助到越来越多的客户,今天给大家汇报下ACK One 3年来的发展演进,以及如何帮助客户解决分布式领域多云多集群管理的挑战。
阿里云容器服务 ACK One 分布式云容器企业落地实践
|
2月前
|
NoSQL 关系型数据库 Redis
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
|
1月前
|
监控 应用服务中间件 nginx
详细解释容器以及虚拟机centos7.9容器化部署基础服务(容器化部署nginx)
容器是一种轻量级、可移植的软件打包和隔离技术,将应用程序及其依赖项打包,确保在任何环境中一致运行。容器共享主机操作系统内核,相比虚拟机更高效、轻量,具有快速启动和高资源利用率的特点。容器的关键技术包括命名空间(如 PID、NET 等)、控制组(cgroups)和联合文件系统(UnionFS)。使用容器可以提高开发和部署效率,简化管理,确保环境一致性。例如,在 CentOS 7.9 上部署 Nginx 时,可以通过 Docker 下载和运行 `nginx:1.20` 镜像,并通过端口映射使外部请求访问 Nginx 服务。此外,还可以将测试页面复制到容器中,进一步验证容器的功能。
|
3月前
|
应用服务中间件 Linux nginx
Linux虚拟机磁盘扩容、Docker容器磁盘满的问题、Docker安装nginx
这篇文章讨论了Linux虚拟机磁盘扩容的方法,包括外部配置、具体扩容步骤和扩容后的效果验证。同时,文章还涉及了Docker容器磁盘满的问题及其解决方法,如删除不必要的镜像和容器,以及调整Docker的安装路径。此外,还提到了意外情况的处理,例如误删除停止的容器后的应对措施。最后,文章还提供了使用Docker安装nginx的步骤和成功访问的截图。
Linux虚拟机磁盘扩容、Docker容器磁盘满的问题、Docker安装nginx
|
3月前
|
弹性计算 运维 负载均衡
基于阿里云容器服务Kubernetes版(ACK)| 容器化管理云上应用
【8月更文挑战第3天】基于阿里云容器服务Kubernetes版(ACK)| 容器化管理云上应用
|
3月前
|
网络协议 网络安全 网络架构
【Azure 容器应用】在中国区Azure上创建的容器服务默认应用域名不全
【Azure 容器应用】在中国区Azure上创建的容器服务默认应用域名不全
|
4月前
|
人工智能 运维 安全
阿里云容器服务ACK:高效管理云上应用的容器化解决方案
阿里云容器服务ACK(Alibaba Cloud Container Service for Kubernetes)为开发者提供了一套全面的容器化管理解决方案,旨在简化云上应用的部署、运维和管理。本文将深入探讨ACK的功能、优势及应用场景,为开发者展现容器化技术在云环境下的强大能力。
328 0
|
3月前
|
Kubernetes 网络协议 网络安全
在K8S中,容器提供一个服务,外部访问慢,到底是容器网络问题?还是容器服务问题?这种怎么排查?
在K8S中,容器提供一个服务,外部访问慢,到底是容器网络问题?还是容器服务问题?这种怎么排查?
|
3月前
|
Ubuntu 应用服务中间件 nginx
Docker 解析:如何将 Nginx 容器化并用作代理
Docker 解析:如何将 Nginx 容器化并用作代理
208 0

相关产品

  • 容器服务Kubernetes版
  • 下一篇
    无影云桌面