快速部署基于Nginx的Web应用

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

重要

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

前提条件

步骤一:部署Nginx服务

通过控制台部署

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

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

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

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

  4. 应用基本信息页面,填入以下示例值,然后单击右方的下一步,未提及的配置项请保持默认。

    配置项

    示例值

    应用名称

    nginx-deploy

    副本数量

    1

  5. 容器配置页面,填入以下示例值,并单击右方的下一步,未提及的配置项请保持默认。

    配置项

    示例值

    镜像名称

    nginx

    镜像Tag

    alpine

    所需资源

    CPU :1Core

    内存:2GB

    端口

    名称:example-port

    容器端口:80

    协议:TCP

  6. 在高级配置页面,创建一个新的服务(Service),在创建服务面板中在端口映射中填入以下示例值,然后单击面板右下方的创建。

    配置项

    示例值

    名称

    example-map

    服务端口

    80

    容器端口

    80

    协议

    TCP

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

  8. 容器组页签下,等待容器组的状态变为Running。然后单击访问方式页签,记录下nginx-deploy-svc的外部端点(外部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:  nginx:alpine
            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

步骤二:测试服务

在浏览器中输入nginx-service的外部IP(EXTERNAL-IP)并前往。

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

E0BAA015-8D49-48B7-B379-046ABA6BAB27.png

后续步骤

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

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

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

  2. 集群列表页面,单击目标集群右方的更多 > 删除

  3. 删除集群面板中,选中以下复选框:同时删除集群下的ALB资源同时删除集群下的PrivateZone资源我已知晓以上信息并确认删除集群,然后单击确定