文档首页> 云容器引擎 CCE> 快速入门> 创建无状态工作负载(Nginx)
更新时间:2023-08-18 GMT+08:00

创建无状态工作负载(Nginx)

您可以使用镜像快速创建一个可公网访问的单实例工作负载。本章节将指导您基于云容器引擎CCE快速部署Nginx容器应用,并管理该容器应用的全生命周期,以期让您具备将云容器引擎应用到实际项目中的能力。

前提条件

您需要创建一个至少包含一个4核8G节点的集群,且该节点已绑定弹性IP。

集群是运行工作负载的逻辑分组,包含一组云服务器资源,每台云服务器即集群中的一个节点。

创建集群的方法,请参见快速创建Kubernetes集群

Nginx应用概述

Nginx是一款轻量级的Web服务器,您可通过CCE快速搭建nginx web服务器。

本章节将以创建Nginx应用为例,来创建一个工作负载,预计需要5分钟。

本章节执行完成后,可成功访问Nginx的网页,如下图。

图1 本例结果

通过控制台创建Nginx

本章节将指导您通过容器镜像创建您的第一个容器工作负载。

  1. 登录CCE控制台
  2. 单击集群进入集群控制台。
  3. 在左侧菜单栏选择“工作负载”,单击右上角“创建负载”
  4. 填写以下参数,其它保持默认。

    基本信息

    • 负载类型:选择无状态负载。
    • 负载名称:nginx。
    • 命名空间:default。
    • 实例数量:请设置为1。

    容器配置

    在“容器信息 > 基本信息”中单击“选择镜像”,在弹出的窗口中选择“镜像中心”,并搜索“nginx”,选择nginx镜像。

    图2 选择nginx镜像

    服务配置

    单击服务配置下的加号,创建服务(Service),用于从外部访问负载。本例将创建一个负载均衡类型的Service,请在右侧弹窗中配置如下参数。

    • Service名称:输入应用发布的可被外部访问的名称,设置为:nginx。
    • 访问类型:选择“负载均衡 ( LoadBalancer )”
    • 服务亲和:保持默认。
    • 负载均衡器:如果已有负载均衡(ELB)实例,可以选择已有ELB,如果没有可选择“自动创建”,创建一个公网类型负载均衡器。
    • 端口配置:
      • 对外协议:TCP。
      • 服务端口:设置为8080,该端口号将映射到容器端口。
      • 容器端口:容器中应用启动监听的端口,nginx镜像请设置为80,其他应用容器端口和应用本身的端口一致。
    图3 创建服务

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

    等待工作负载创建成功。

    创建成功后在无状态负载下会显示一个运行中的工作负载。

    图4 创建工作负载成功

访问Nginx

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

    单击Nginx工作负载名称,进入工作负载详情页。在访问方式页签下可以看到nginx的IP地址,其中公网地址就是外部访问地址。
    图5 获取外部访问地址

  2. 在浏览器中输入“外部访问地址”,即可成功访问应用,如下图所示。

    图6 访问nginx应用

通过kubectl创建Nginx

本步骤指导您通过kubectl创建一个无状态工作负载(Deployment),并通过负载均衡类型Service将负载公开,使得其能从外网访问。

  1. 请参见通过kubectl连接集群,使用kubectl连接集群。
  2. 创建一个名为nginx-deployment.yaml的描述文件。其中,nginx-deployment.yaml为自定义名称,您可以随意命名。

    vi 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:alpine
            name: nginx
          imagePullSecrets:
          - name: default-secret

  3. 创建deployment。

    kubectl create -f nginx-deployment.yaml

    回显如下表示已开始创建deployment。

    deployment "nginx" created

    查看deployment状态。

    kubectl get deployment

    deployment状态显示为Running,表示deployment已创建成功。

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

    参数解析:

    • NAME:工作负载名称。
    • READY:表示工作负载的可用状态,显示为“可用Pod个数/期望Pod个数”。
    • UP-TO-DATE:指当前已经完成更新的副本数。
    • AVAILABLE:可用的Pod个数。
    • AGE:已经运行的时间。

  4. 创建一个名为nginx-elb-svc.yaml的描述文件。将selector修改为nginx-deployment.yaml示例应用文件中matchLabels的值(本示例为app: nginx),从而将该服务关联至后端应用。

    下面示例中参数详细描述清参见负载均衡(LoadBalancer)
    apiVersion: v1 
    kind: Service 
    metadata: 
      annotations:   
        kubernetes.io/elb.class: union
        kubernetes.io/elb.autocreate: 
            '{
                "type": "public",
                "bandwidth_name": "cce-bandwidth",
                "bandwidth_chargemode": "bandwidth",
                "bandwidth_size": 5,
                "bandwidth_sharetype": "PER",
                "eip_type": "5_bgp"
            }'
      labels:
        app: nginx
      name: nginx 
    spec: 
      ports: 
      - name: service0 
        port: 80
        protocol: TCP 
        targetPort: 80
      selector: 
        app: nginx 
      type: LoadBalancer

  5. 创建服务。

    kubectl create -f nginx-elb-svc.yaml

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

    service/nginx created

    kubectl get svc

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

    NAME         TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
    kubernetes   ClusterIP      10.247.0.1       <none>        443/TCP        3d
    nginx        LoadBalancer   10.247.130.196   10.78.42.242   80:31540/TCP   51s

  6. 在浏览器中输入访问地址,例如输入10.78.42.242:80。10.78.42.242为负载均衡实例IP地址,80为对应界面上的访问端口。

    可成功访问nginx。

    图7 通过负载均衡访问nginx