云容器引擎 CCE_AUTOPILOT-创建无状态负载(Deployment):通过kubectl命令行创建

时间:2024-08-02 22:37:38

通过kubectl命令行创建

本节以nginx工作负载为例,说明kubectl命令创建工作负载的方法。

Autopilot集群暂不支持配置节点亲和与反亲和,所以当您使用kubectl命令行创建工作负载时,为避免Pod创建失败,请不要配置affinity字段。

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

    vi nginx-deployment.yaml

    描述文件内容如下。此处仅为示例,deployment的详细说明请参见kubernetes官方文档

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: nginx
      strategy:
        type: RollingUpdate
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - image: nginx    #若使用“开源镜像中心”的镜像,可直接填写镜像名称;若使用“我的镜像”中的镜像,请在SWR中获取具体镜像地址。
            imagePullPolicy: Always
            name: nginx
          imagePullSecrets:
          - name: default-secret

    以上yaml字段解释如表1

    表1 deployment字段详解

    字段名称

    字段说明

    必选/可选

    apiVersion

    表示API的版本号。

    说明:

    请根据集群版本输入:

    • 1.17及以上版本的集群中无状态应用apiVersion格式为apps/v1
    • 1.15及以下版本的集群中无状态应用apiVersion格式为extensions/v1beta1

    必选

    kind

    创建的对象类别。

    必选

    metadata

    资源对象的元数据定义。

    必选

    name

    deployment的名称。

    必选

    spec

    用户对deployment的详细描述的主体部分都在spec中给出。

    必选

    replicas

    实例数量。

    必选

    selector

    定义Deployment可管理的容器实例。

    必选

    strategy

    升级类型。当前支持两种升级方式,默认为滚动升级。

    • RollingUpdate:滚动升级。
    • ReplaceUpdate:替换升级。

    可选

    template

    描述创建的容器实例详细信息。

    必选

    metadata

    元数据。

    必选

    labels

    metadata.labels定义容器标签。

    可选

    spec:

    containers

    • image(必选):容器镜像名称。
    • imagePullPolicy(可选):获取镜像的策略,可选值包括Always(每次都尝试重新下载镜像)、Never(仅使用本地镜像)、IfNotPresent(如果本地有该镜像,则使用本地镜像,本地不存在时下载镜像),默认为Always。
    • name(必选):容器名称。

    必选

    imagePullSecrets

    Pull镜像时使用的secret名称。若使用私有镜像,该参数为必选。

    • 需要Pull SWR容器镜像 仓库的镜像时,参数值固定为default-secret。
    • 当Pull第三方镜像仓库的镜像时,需设置为创建的secret名称。

    可选

  3. 创建deployment。

    kubectl create -f nginx-deployment.yaml

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

    deployment "nginx" created

  4. 查看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:已经运行的时间。

  5. 若工作负载(即deployment)需要被访问,您需要设置访问方式,具体请参见服务(Service)创建对应服务。
support.huaweicloud.com/usermanual-cce-autopilot/cce_11_0047.html