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

地址: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.aliyu...
3.在概览页面中,单击文件系统>文件系统列表。

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

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

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

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

7.在挂载应用页签, 单击指标挂载点操作列的挂载。

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

返回如下页面,待挂载状态为已挂载,示意NAS已胜利挂载到ECS上。

上传文件到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

应用CNFS托管NAS文件系统

传统的共享文件系统存在短少容量配额的准确管制、无奈复原误删文件、缺失存储卷容量性能等监控指标、无平安加密及小文件读写提早等问题。容器网络文件系统CNFS晋升NAS文件系统的性能,QoS管制。

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

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

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

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

4)在集群信息页面中,单击通过CloudShell治理集群。

返回如下页面,代表你已关上CloudShell。

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

6)在菜单栏中,单击附件>Mousepad。

返回如下页面,示意你已胜利关上Mousepad。

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/v1beta1kind: ContainerNetworkFileSystemmetadata:  name: cnfs-nas-filesystemspec:  description: "cnfs"  type: nas  reclaimPolicy: Retain  parameters:    server: 17f7e4****-hlm35.cn-beijing.nas.aliyuncs.comEOF

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


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

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


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

cat <<EOF | kubectl apply -f -apiVersion: storage.k8s.io/v1kind: StorageClassmetadata:  name: alibabacloud-nas-cnfsmountOptions:  - nolock,tcp,noresvport  - vers=3parameters:  volumeAs: subpath  containerNetworkFileSystem: cnfs-nas-filesystem  path: "/"provisioner: nasplugin.csi.alibabacloud.comreclaimPolicy: RetainallowVolumeExpansion: trueEOF

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

cat <<EOF | kubectl apply -f -apiVersion: v1kind: PersistentVolumeClaimmetadata:  name: cnfs-nas-pvcspec:  accessModes:    - ReadWriteMany  storageClassName: alibabacloud-nas-cnfs  resources:    requests:      storage: 70GiEOF

4.在CloudShell上方菜单栏中,单击 图标,敞开CloudShell。

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

返回如下页面,示意PV创立胜利。

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

返回如下页面,示意PVC创立胜利。

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

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

cd /mnt

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

ls


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

mv index.html nas-xxxxx

创立NGINX利用

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

3在无状态页面,单击应用镜像创立。

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

5在容器配置页签,实现以下配置。
1)在根本配置区域,单击抉择镜像。

2)在镜像抉择对话框中,单击搜寻,抉择Docker镜像,在搜寻框中输出nginx,单击搜寻。

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

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

阐明 :

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


6在高级配置页签,实现以下配置。
1)在拜访设置区域,单击服务(Service)右侧的创立。

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

留神 :

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

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

4)在创立对话框的规定配置中,设置域名和名称,其余选项放弃默认值,单击创立。

参数阐明:

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

如果您没有域名,能够先随便填写一个测试域名即可。

名称:抉择上一步创立的nginx-nas-svc服务。

路由创立实现后,您能够看到路由一栏应该显示域名与对应服务的信息。路由性能会将用户申请通过简略扇出的办法,打散到多个容器节点上进行解决。

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

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

返回如下页面,期待所有利用工作创立状态为胜利,示意您的利用曾经创立实现。

拜访测试网站

期待NAS和容器的配置实现后,您就能够应用本地电脑拜访测试网站了。

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

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

1.在创立实现页签中,单击查看利用详情。

2)在利用详情页面,单击拜访形式。

3)复制路由的端点IP地址到粘贴板,这个IP地址就是公网拜访网站应用的IP地址。

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

阐明 :

如果您本地机器是Linux和Mac零碎,请批改/etc/hosts文件。

  1. 应用浏览器关上网站。

阐明 :

如果您不能失常拜访,您能够尝试清空浏览器缓存,或者应用无痕浏览模式拜访。

验证服务高可用

因为部署NGINX利用的时候,抉择了容器组最小正本数为2,所以在一台容器宿主节点宕机的状况下,网站依然能够由另一台容器宿主节点提供服务,保障了服务的高可用个性。

1、模仿节点故障。

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

2)节点页面,抉择任意2个节点,而后单击上面操作栏排水/设置不可调度。

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

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

4)应用本机浏览器关上网站,发现依然能够失常拜访。

2、 复原节点。

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

2)应用浏览器关上网站,发现依然能够失常拜访。

验证弹性扩容

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

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

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

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

返回如下页面,您能够查看以后正本数和容器组以后以后CPU使用率。

  1. 模仿容器高负载。

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

2)在集群详情页面,单击通过CloudShell治理集群。

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

kubectl get pod

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)在集群详情页面左侧导航栏中,单击无状态。

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

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

4)稍等一点工夫,您能够看到以后CPU使用率显著升高。

期待几分钟后再次查看,发现以后正本数曾经变为10。

c. 此时,应用浏览器关上网站,发现依然能够失常拜访。

  1. 解除容器高负载。

a. 进入CloudShell命令行。

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

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

单击容器组程度伸缩器查看以后正本数和容器组以后以后CPU使用率。

能够看到CPU使用率和正本数显著降落。