文档首页/ 云容器引擎 CCE_Autopilot集群/ 快速入门/ 在CCE Autopilot集群中部署Nginx工作负载
更新时间:2024-11-12 GMT+08:00

在CCE Autopilot集群中部署Nginx工作负载

CCE Autopilot集群是云容器引擎服务推出的Serverless版集群,提供免运维的容器服务,您无需购买和管理节点即可部署应用,降低运维成本,同时提升应用的可靠性和扩展性。Nginx是一款高性能的开源HTTP服务器和反向代理服务器,广泛用于处理高并发、负载均衡和静态资源服务。本示例以Nginx为例,帮助您了解如何创建CCE Autopilot集群以及如何在集群中部署工作负载。

操作流程

操作步骤

步骤说明

费用说明

准备工作

您需要注册华为账号,并为账户充值。

不涉及费用。

步骤一:首次开通CCE并进行授权

当您的账号在当前区域中首次使用CCE时,您需要为CCE进行授权。

不涉及费用。

步骤二:创建CCE Autopilot集群

在CCE服务中创建CCE Autopilot集群,从而简化Kubernetes集群的管理和操作。

涉及集群管理和终端节点等费用,具体请参见计费说明

步骤三:创建并访问Nginx工作负载

在集群中创建工作负载以运行您的容器,并为其创建一个服务,然后您就可以从公网访问您的应用。

涉及Pod费用,具体请参见计费说明

后续操作:释放资源

如果您在完成实践后不需要继续使用集群,请及时清理资源以免产生额外扣费。

不涉及费用。

准备工作

步骤一:首次开通CCE并进行授权

由于CCE在运行中对计算、存储、网络以及监控等各类云服务资源都存在依赖关系,因此当您首次登录CCE控制台时,CCE将自动请求获取当前区域下的云资源权限,从而更好地为您提供服务。如果您在当前区域已完成授权,可忽略本步骤。

  1. 使用华为账号登录CCE控制台
  2. 单击管理控制台左上角的,选择区域。
  3. 在首次登录某个区域的CCE控制台时将跳出“授权说明”,请您在仔细阅读后单击“确定”

    当您同意授权后,CCE将在IAM中创建名为“cce_admin_trust”委托,统一对您的其他云服务资源进行操作,并且授予其Tenant Administrator权限。Tenant Administrator拥有除IAM管理外的全部云服务管理员权限,用于对CCE所依赖的其他云服务资源进行调用,且该授权仅在当前区域生效。您可前往“统一身份认证服务 IAM > 委托”页签,单击“cce_admin_trust”查看各区域的授权记录。关于资源委托详情,您可参考委托进行了解。

    由于CCE对其他云服务有许多依赖,如果没有Tenant Administrator权限,可能会因为某个服务权限不足而影响CCE功能的正常使用。因此在使用CCE服务期间,请不要自行删除或者修改“cce_admin_trust”委托。

步骤二:创建CCE Autopilot集群

在CCE服务中创建CCE Autopilot集群,从而简化Kubernetes集群的管理和操作。

  1. 返回CCE控制台

    • 如果您的帐号在当前区域未创建过集群,请在当前页面单击“购买集群”“购买CCE Autopilot集群”,进入购买页。
    • 如果您的帐号在当前区域已创建过集群,请在左侧菜单栏选择集群管理,单击右上角“购买集群”,进入购买页。

  2. 配置集群基础信息。

    本示例中仅解释必要参数,其他参数保留默认值。关于配置参数的详细说明请参见购买Autopilot集群

    参数

    示例

    参数说明

    集群类型

    CCE Autopilot集群

    CCE支持创建多种类型集群,满足各种业务需求,提供高可靠、安全的商业级容器集群服务。

    • CCE Standard集群:标准版本集群,提供高可靠、安全的商业级容器集群服务。
    • CCE Turbo集群:拥有更高性能的云原生网络,提供云原生混部调度能力,可实现更高的资源利用率和更广的全场景覆盖。
    • CCE Autopilot集群:Serverless版集群,提供免运维的容器服务,可以大幅降低运维成本,提高应用程序的可靠性和可扩展性。

    了解集群类型的更多内容,请参见集群对比

    集群名称

    autopilot-example

    新建集群的名称。

    企业项目

    default

    该参数仅对开通企业项目的企业客户账号显示,不显示时请忽略。

    企业项目是一种资源管理单位,可跨区域归类资源,方便企业按部门或项目组集中管理。了解企业项目的更多内容,请参见项目管理

    请根据需要选择适合的企业项目,如果没有特殊要求,可以选择default。

    集群版本

    v1.28

    集群安装的Kubernetes软件版本,建议选择最新版本。

  3. 配置集群网络信息。

    本示例中仅解释必要参数,其他参数保留默认值。关于配置参数的详细说明请参见购买Autopilot集群

    参数

    示例

    参数说明

    虚拟私有云

    vpc-autopilot

    选择集群所在的虚拟私有云VPC。如果没有可选项,单击右侧“新建虚拟私有云”创建,具体请参见创建虚拟私有云和子网。集群创建后不可修改。

    容器子网

    subnet-502f

    选择容器所在子网。如果没有可选项,单击右侧“新建子网”创建,具体请参见创建虚拟私有云和子网。容器子网决定了集群下容器的数量上限,集群创建后支持新增子网。

    服务网段

    10.247.0.0/16

    同一集群下容器互相访问时使用的Service资源网段,决定Service资源的上限。集群创建后不可修改。

    镜像访问

    -

    为确保您的集群节点可以从容器镜像服务中拉取镜像,默认使用所选的VPC中已有的终端节点,否则系统将为您新建SWR和OBS的终端节点。

    终端节点将产生一定费用,详情请参见价格计算器(VPC终端节点)

    配置SNAT

    开启

    默认开启,开启后您的集群可以通过NAT网关访问公网。默认使用所选的VPC中已有的NAT网关,否则系统将会为您自动创建一个默认规格的NAT网关并绑定弹性公网IP,并自动配置SNAT规则。

    使用NAT网关将产生一定费用,详情请参见价格计算器(NAT网关)

  4. 单击“下一步:插件选择”,选择创建集群时需要安装的插件。

    本示例中,仅选择默认安装的必选插件。

  5. 单击“下一步:插件配置”,对选择的插件进行配置,其中默认插件无法进行配置。

    本示例中,默认插件无需配置。

  6. 单击“下一步:确认配置”,显示集群资源清单,确认无误后,单击“提交”

    创建集群预计需要5-10分钟左右,请耐心等待。

    创建成功后,集群管理中对应集群的状态为运行中。

步骤三:创建并访问Nginx工作负载

在集群中创建Nginx工作负载,将应用程序或服务部署到容器环境中,实现资源的高效利用和自动化管理。同时,为该工作负载创建负载均衡类型的服务,使您能够从公网访问应用。本节介绍两种方式创建和访问Nginx工作负载,即控制台方式和kubectl命令行方式。

  1. 单击新建的集群名称,进入集群控制台。
  2. 左侧菜单栏选择“工作负载”,单击右上角“创建工作负载”,进入创建页。
  3. 配置工作负载基本信息。

    本示例中仅解释必要参数,其他参数保留默认值。关于配置参数的详细说明请参见创建工作负载,您可以根据工作负载类型选择适合的参考文档。

    参数

    示例

    参数说明

    负载类型

    无状态负载

    Deployment

    工作负载是一种对Pod的抽象管理方式,用于定义和控制Pod的创建、运行和生命周期。通过工作负载,您可以批量管理和自动化控制多个Pod的行为,如伸缩、更新和恢复。

    • 无状态负载(Deployment):管理无状态应用,支持上线部署、滚动升级、创建副本和恢复上线。
    • 有状态负载(StatefulSet):管理有状态应用,确保每个Pod能够拥有独立的状态。
    • 普通任务(Job):一次性任务,完成后Pod自动删除。
    • 定时任务(CronJob):基于时间的Job,指定时间周期内运行指定的Job。

    了解工作负载的更多内容,请参见工作负载概述

    Nginx主要用于处理请求转发、负载均衡和静态内容分发,不需要在本地保存任何持久性数据,因此本示例将Nginx部署为无状态负载。

    负载名称

    nginx

    请填写工作负载的名称。

    命名空间

    default

    命名空间是Kubernetes集群中的抽象概念,可以将集群中的资源或对象划分为一个组,且不同命名空间中的数据彼此隔离,您可以根据需要创建并使用命名空间。

    集群创建后会默认生成default命名空间,如果没有特殊要求,可以直接选择default命名空间。

    实例数量

    1

    工作负载中Pod的数量。

  4. 配置工作负载容器信息。

    本示例中仅解释必要参数,其他参数保留默认值。关于配置参数的详细说明请参见创建工作负载,您可以根据工作负载类型选择适合的参考文档。

    参数

    示例

    参数说明

    镜像名称

    nginx

    单击“选择镜像”,在弹出的窗口中切换至“镜像中心”,选择公共镜像。

    镜像版本

    latest

    选择需要部署的镜像版本。

    CPU配额

    0.25cores

    CPU资源限制值,即CPU资源限制值,即允许容器使用的CPU最大值,防止占用过多资源,默认0.25cores。

    内存配额

    512MiB

    内存资源限制值,即允许容器使用的内存最大值。如果超过,容器会被终止,默认512MiB。

  5. 配置工作负载服务信息。

    单击“服务配置”下的加号,进入创建服务页面。

    本示例中需要外部访问Nginx,所以访问类型设置为负载均衡。

    本示例仅解释负载均衡的必要参数,其他参数保留默认值。关于配置参数的详细说明请参见服务(Service),您可以根据服务类型选择适合的参考文档。

    参数

    示例

    参数说明

    Service名称

    nginx

    请填写服务的名称。

    访问类型

    负载均衡

    选择服务类型,即服务访问的方式。

    • 集群内访问:通过集群的内部IP暴露服务,只能够在集群内部访问。
    • 负载均衡:通过弹性负载均衡(ELB)对外部提供服务,即能够从公网访问到工作负载。

    了解服务类型的更多内容,请参见服务(Service)

    负载均衡器

    独享型

    网络型(TCP/UDP)&应用型(HTTP/HTTPS)

    选择已有

    elb-nginx

    • 如果已有负载均衡(ELB)实例,可以选择已有ELB。
      说明:

      使用已有的ELB时,仅支持集群所在VPC下、实例规格支持网络型的独享型ELB实例。

    端口配置

    协议:TCP

    负载均衡监听器端口协议。

    容器端口:80

    容器中应用启动监听的端口,该容器端口需和应用对外提供的监听端口一致。

    使用nginx镜像请设置为80。

    服务端口:8080

    ELB将会使用该端口创建监听器,提供外部流量访问入口,可自定义。

  6. 单击右下角“创建工作负载”

    创建成功后,无状态工作负载列表中对应工作负载的状态为运行中。

  7. 获取Nginx的外部访问地址。

    单击Nginx工作负载名称,进入工作负载详情页。“访问方式”页签中,“负载均衡公网IP:访问端口”即为外部访问地址。

  8. 在浏览器中输入“负载均衡公网IP:访问端口”,即可成功访问应用。

该步骤涉及命令行操作,您可以使用以下两种方式进行相关操作:

以第一种方法为例,介绍如何使用kubectl命令行方式创建Nginx工作负载。

  1. 单击新建的集群名称,进入集群控制台。
  2. 单击右上角“命令行工具”,进入CloudShell页面。

    目前,只有部分局点支持CloudShell连接集群,具体情况请以控制台为准。

  3. 创建YAML文件nginx-deployment.yaml,用于配置nginx工作负载,文件名称可自定义。

    vim nginx-deployment.yaml

    文件内容如下:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx     # 工作负载名称
    spec:
      replicas: 1     # 实例数量
      selector:
        matchLabels:  # 选择器,用于选择带有特定标签的资源
          app: nginx  
      template:
        metadata:
          labels:     # 标签
            app: nginx
        spec:
          containers:
          - image: nginx:latest   # 镜像名称:镜像版本
            name: nginx
          imagePullSecrets:
          - name: default-secret

    输入完成后,Esc键退出编辑,输入:wq保存。

  4. 执行以下命令,创建工作负载。

    kubectl create -f nginx-deployment.yaml

    回显如下,表示已经开始创建工作负载。

    deployment.apps/nginx created

  5. 执行以下命令,查看工作负载状态。

    kubectl get deployment

    回显如下,如果工作负载创建的Pod皆为可用状态,则表示创建成功。

    NAME     READY   UP-TO-DATE   AVAILABLE   AGE
    nginx    1/1     1            1           4m59s

    回显内容的参数解析如下:

    参数

    示例

    参数说明

    NAME

    nginx

    工作负载的名称。

    READY

    1/1

    表示工作负载的可用状态,显示为“可用Pod个数/期望Pod个数”。

    UP-TO-DATE

    1

    指当前工作负载已经完成更新的Pod数。

    AVAILABLE

    1

    工作负载可用的Pod个数。

    AGE

    4m59s

    工作负载已经运行的时间。

  6. 创建负载均衡类型的服务,并关联已创建的工作负载nginx。

    本示例基于已有的弹性负载均衡(ELB)实例创建服务,如果您需要自动创建ELB请参考通过kubectl命令行创建-自动创建ELB

    创建YAML文件nginx-elb-svc.yaml,用于配置负载均衡服务,文件名称可自定义。
    vim nginx-elb-svc.yaml

    文件内容如下:

    apiVersion: v1 
    kind: Service 
    metadata: 
      name: nginx      # 服务的名称
      annotations:
        kubernetes.io/elb.id: <your_elb_id>          # ELB ID,替换为实际值
        kubernetes.io/elb.class: performance         # 负载均衡器类型
    spec:
      selector: 
         app: nginx
      ports: 
      - name: service0 
        port: 8080     
        protocol: TCP 
        targetPort: 80  
      type: LoadBalancer

    输入完成后,Esc键退出编辑,输入:wq保存。

    参数

    示例

    参数说明

    kubernetes.io/elb.id

    405ef586-0397-45c3-bfc4-xxx

    已有的ELB的ID。

    说明:

    使用已有的ELB时,仅支持集群所在VPC下、实例规格支持网络型的独享型ELB实例。

    获取方式:进入网络控制台首页,选择“弹性负载均衡 > 我的ELB”,找到对应的ELB名称,名称下方即为对应ID。

    kubernetes.io/elb.class

    performance

    负载均衡器类型,仅支持performance类型,即独享型负载均衡。

    selector

    app: nginx

    选择器,服务将流量发送给对应标签的Pod。

    须知:

    selector取值需与工作负载YAML文件中matchLabels参数取值一致,本示例中为app: nginx。

    ports.port

    8080

    弹性负载均衡(ELB)将会使用该端口创建监听器,提供外部流量访问入口,可自定义。

    ports.protocol

    TCP

    负载均衡监听器端口协议。

    ports.targetPort

    80

    Service访问目标容器的端口,此端口与容器中运行的应用强相关。

    使用nginx镜像请设置为80。

  7. 执行以下命令创建服务。

    kubectl create -f nginx-elb-svc.yaml

    回显如下,表示服务已创建。

    service/nginx created

  8. 执行以下命令查看服务。

    kubectl get svc

    回显如下,表示工作负载访问方式已设置成功。

    NAME         TYPE           CLUSTER-IP     EXTERNAL-IP                  PORT(S)          AGE
    kubernetes   ClusterIP      10.247.0.1     <none>                       443/TCP          18h
    nginx        LoadBalancer   10.247.56.18   xx.xx.xx.xx,xx.xx.xx.xx      8080:30581/TCP   5m8s

  9. 在浏览器中输入“外部访问地址:服务端口”,即可成功访问应用。其中外部访问地址为EXTERNAL-IP对应的第一个IP地址的,服务端口为8080。

后续操作:释放资源

如果您无需继续使用集群,请及时释放资源,避免产生额外的费用。

  1. 返回CCE控制台,在左侧导航栏中选择“集群管理”
  2. 找到需要删除的集群,单击集群卡片右上角的,并单击“删除集群”。
  3. 在弹出的“删除集群”窗口中,勾选需要删除的所有资源,并根据页面提示删除NAT网关、SNAT出网EIP和终端节点等资源。

  4. 在确认框中输入“DELETE”,单击“是”,开始执行删除集群操作。

    删除集群需要花费1~3分钟,请耐心等候。