快速部署基于Nginx的Web应用

ACK Serverless集群无需管理节点,无需进行节点的安全维护等运维操作,满足您对应用托管的免运维诉求,让您关注在应用而非底层基础设施管理。本文介绍如何通过ACK Serverless快速部署基于官方Nginx镜像的在线Web应用。

重要

完成本教程预计产生0.25元左右的费用(假设您的资源运行0.5 小时)。您可以在完成本教程后进行后续步骤或释放资源。

前提条件

步骤一:部署Nginx服务

通过控制台部署

步骤一:创建Nginx应用并绑定服务

  1. 登录容器服务管理控制台,在左侧导航栏选择集群列表

  2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择工作负载 > 无状态

  3. 无状态页面,单击右上方的使用镜像创建

  4. 应用基本信息页面,填入以下示例值,然后单击下一步

    未提及的配置项请保持默认。

    配置项

    示例值

    应用名称

    nginx-deploy

    副本数量

    1

  5. 容器配置页面,填入以下示例值,然后单击下一步

    未提及的配置项请保持默认。

    配置项

    示例值

    镜像名称

    anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6

    所需资源

    • CPU :1Core

    • 内存:2GB

    端口

    • 名称:example-port

    • 服务端口:80

    • 容器端口:80

    • 协议:TCP

  6. 高级配置页面,创建一个新的服务(Service),在创建服务面板中填入以下示例值,然后单击确定

    未提及的配置项请保持默认。

    配置项

    示例值

    服务名称

    nginx-deploy-svc-test

    服务类型

    负载均衡 (LoadBalancer)

    • 负载均衡类型:传统型负载均衡 CLB

    • 选择资源:新建资源

    端口映射

    • 名称:example-map

    • 服务端口:80

    • 容器端口:80

    • 协议:TCP

  7. 单击创建,然后点击查看应用详情

  8. 在应用详情的容器组页签下,等待容器组的状态变为Running,然后单击访问方式页签,在外部端点处获取外部访问服务的IP地址。

通过kubectl部署

说明

以下示例可通过本地机器或CloudShell中的kubectl完成。在使用CloudShell时,不需要配置config文件。

步骤一:创建Nginx应用并绑定服务

  1. 通过kubectl连接ACK Serverless集群。具体操作,请参考通过kubectl连接Kubernetes集群

  2. 使用以下样例创建名为nginx.yaml的配置文件。

    apiVersion: v1
    kind: Service
    metadata:
      name: nginx-deploy-svc
    spec:
      ports:
      - port: 80
        protocol: TCP
      selector:
        app: nginx
      type: LoadBalancer
    ---
    apiVersion: apps/v1  # 对于不同的K8s版本这里需要使用不同的对应版本。
    kind: Deployment
    metadata:
      name: nginx-deploy
      labels:
        app: nginx
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
            ports:
            - containerPort: 80
            resources:
              requests:
                cpu: "1"
                memory: "2Gi"
  3. 执行以下命令,将nginx.yaml中的配置应用到集群。

    kubectl apply -f nginx.yaml

    预期输出:

    service/nginx-service created
    deployment.apps/nginx-deploy created
  4. 执行以下命令,查看应用的详细信息。

    kubectl get deploy

    预期输出:

    NAME           READY   UP-TO-DATE   AVAILABLE   AGE
    nginx-deploy   1/1     1            1           9m32s
  5. 执行以下命令,查看服务的详细信息,并记录下“nginx-service”的外部IP(EXTERNAL-IP)。

    kubectl get svc

    预期输出:

    NAME            TYPE           CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE
    kubernetes      ClusterIP      172.XX.X.X     <none>        443/TCP        10d
    nginx-service   LoadBalancer   172.19.X.XXX   47.57.XX.XX   80:32278/TCP   39s

步骤二:测试服务

在浏览器中输入获取的服务外部IP地址(EXTERNAL-IP)并前往。

如果您看到如下的Nginx的初始页面,则表示应用与服务都在正常工作。

nginx

后续步骤

您可以为上文创建的应用配置弹性伸缩策略。具体操作,请参见配置集群的弹性伸缩

如果您不计划配置弹性伸缩,请按照以下步骤释放资源。

删除已创建的应用和服务

  1. 容器服务管理控制台集群列表页面,单击目标集群名称。

  2. 在左侧导航栏选择工作负载 > 无状态,然后选中已创建的Nginx应用,单击批量删除,并按界面提示完成后续确认操作。

删除集群

ACK Serverless集群目前不收取集群管理费用,但在使用ACK Serverless集群过程中用到的其他阿里云云产品资源(如ECI),您需要按照各云产品规定的计费规则,为您使用的资源付费,费用由各云产品收取。完成教程后,请参考以下场景处理集群:

  • 如果不再继续使用集群,请在容器服务管理控制台集群列表页面,找到目标集群并单击对应的更多 > 删除,在弹出面板阅读提示信息,选中要同时删除的相关云产品资源,然后单击删除,并按页面提示完成后续操作。更多信息,请参见删除集群

  • 如果需要继续使用集群,请及时为阿里云账号充值,确保余额充足。如需了解使用ACK Serverless集群Pro过程中用到的其他阿里云云产品资源的计费信息,请参见云产品资源计费