Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Actualización más reciente 2024-09-10 GMT+08:00

Creación de una Deployment

Escenario

Las Deployment son cargas de trabajo (por ejemplo, Nginx) que no almacenan ningún dato o estado. Puede crear Deployment en la consola de CCE o ejecutando los comandos de kubectl.

Requisitos previos

  • Antes de crear una carga de trabajo, debe tener un clúster disponible. Para obtener más información sobre cómo crear un clúster, consulte Compra de un clúster de CCE.
  • Para habilitar el acceso público a una carga de trabajo, asegúrese de que una EIP o un balanceador de carga se ha vinculado a al menos un nodo del clúster.

    Si un pod tiene contenedores múltiples, asegúrese de que los puertos utilizados por los contenedores no entren en conflicto entre sí. De lo contrario, la creación de la Deployment fallará.

Uso de la consola de CCE

  1. Inicie sesión en la consola de CCE.
  2. Haga clic en el nombre del clúster para ir a la consola del clúster, elija Workloads en el panel de navegación y haga clic en Create Workload en la esquina superior derecha.
  3. Establezca información básica sobre la carga de trabajo.

    Basic Info
    • Workload Type: Seleccione Deployment. Para obtener más información sobre los tipos de carga de trabajo, consulte Overview.
    • Workload Name: Introduzca el nombre de la carga de trabajo. Escriba de 1 a 63 caracteres que comienzan con una letra minúscula y terminan con una letra minúscula o un dígito. Solo se permiten letras minúsculas, dígitos y guiones (-).
    • Namespace: Seleccione el espacio de nombres de la carga de trabajo. El valor predeterminado es default. También puede hacer clic en Create Namespace para crear uno. Para obtener más información, véase Creación de un espacio de nombres.
    • Pods: Ingrese el número de pods.
    • Container Runtime: Un clúster de CCE utiliza runC de forma predeterminada, mientras que un clúster de CCE Turbo soporta runC y Kata. Para obtener más información sobre las diferencias, consulte Contenedores de Kata y contenedores comunes.
    • Time Zone Synchronization: Especifique si desea habilitar la sincronización de zona horaria. Una vez activada la sincronización de zona horaria, el contenedor y el nodo utilizan la misma zona horaria. La función de sincronización de zona horaria depende del disco local montado en el contenedor. No modifique ni elimine la zona horaria. Para obtener más información, véase Configuración de la sincronización de zona horaria.
    Configuración del contenedor
    • Información del contenedor
      Se pueden configurar múltiples contenedores en un pod. Puede hacer clic en Add Container a la derecha para configurar varios contenedores para el pod.
    • Image Access Credential: Seleccione la credencial utilizada para acceder al repositorio de imágenes. El valor predeterminado es default-secret. Puede usar default-secret para acceder a las imágenes en SWR. Para obtener más información acerca de default-secret, consulte default-secret.
    • GPU graphics card: All está seleccionado de forma predeterminada. La instancia de carga de trabajo se programará en el nodo con el tipo de tarjeta gráfica de GPU especificado.

    Configuración de servicio

    Se utiliza un Service para el acceso a pods. Con una dirección IP fija, un Service reenvía el tráfico de acceso a los pods y realiza el balanceo de carga para estos pods.

    También puede crear un Service después de crear una carga de trabajo. Para obtener más información sobre el Service, consulte Descripción general.

    Configuración avanzada

  4. Haga clic en Create Workload en la esquina inferior derecha.

Uso de kubectl

El siguiente procedimiento utiliza Nginx como ejemplo para describir cómo crear una carga de trabajo con kubectl.

  1. Utilice kubectl para conectarse al clúster. Para obtener más información, véase Conexión a un clúster con kubectl.
  2. Cree y edite el archivo nginx-deployment.yaml. nginx-deployment.yaml es un nombre de archivo de ejemplo. Puede cambiar el nombre según sea necesario.

    vi nginx-deployment.yaml

    El siguiente es un archivo YAML de ejemplo. Para obtener más información sobre las Deployments, consulte la documentación de 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    # If you use an image from an open-source image registry, enter the image name. If you use an image in My Images, obtain the image path from SWR.
            imagePullPolicy: Always
            name: nginx
          imagePullSecrets:
          - name: default-secret

    Para obtener más información sobre estos parámetros, consulte Tabla 1.

    Tabla 1 Parámetro de YAML de Deployment

    Parámetro

    Descripción

    Obligatorio/opcional

    apiVersion

    Versión de la API.

    NOTA:

    Establezca este parámetro en función de la versión del clúster.

    • Para los clústeres de v1.17 o posterior, el formato de apiVersion de las Deployments es apps/v1.
    • Para los clústeres de v1.15 o versiones anteriores, el formato de apiVersion de las Deployments es extensions/v1beta1.

    Obligatorio

    kind

    Tipo de un objeto creado.

    Obligatorio

    metadata

    Metadatos de un objeto de recurso.

    Obligatorio

    name

    Nombre de la Deployment.

    Obligatorio

    Spec

    Descripción detallada de la Deployment.

    Obligatorio

    replicas

    Número de pods.

    Obligatorio

    selector

    Determina los pods de contenedor que puede gestionar la Deployment.

    Obligatorio

    strategy

    Modo de actualización. Valores posibles:

    • RollingUpdate
    • ReplaceUpdate

    De forma predeterminada, se utiliza la actualización acumulativa.

    Opcional

    template

    Descripción detallada de un pod de contenedor creado.

    Obligatorio

    metadata

    Metadatos.

    Obligatorio

    labels

    metadata.labels: Etiquetas de contenedor.

    Opcional

    spec:

    containers

    • image (obligatorio): Nombre de una imagen de contenedor.
    • imagePullPolicy (opcional): Política para la obtención de una imagen. Las opciones incluyen Always (intentando descargar imágenes cada vez), Never (solo usando imágenes locales) y IfNotPresent (utilizando imágenes locales si están disponibles; descargando imágenes si las imágenes locales no están disponibles). El valor predeterminado es Always.
    • name (obligatorio): Nombre del contenedor.

    Obligatorio

    imagePullSecrets

    Nombre del secreto utilizado durante la extracción de imágenes. Si se utiliza una imagen privada, este parámetro es obligatorio.

    • Para extraer una imagen del Software Repository for Container (SWR), establezca este parámetro en default-secret.
    • Para extraer una imagen de un repositorio de imágenes de terceros, establezca este parámetro en el nombre del secreto creado.

    Opcional

  3. Cree una Deployment.

    kubectl create -f nginx-deployment.yaml

    Si se muestra la siguiente información, se está creando la Deployment.

    deployment "nginx" created

  4. Consulte el estado de Deployment.

    kubectl get deployment

    Si se muestra la siguiente información, se está ejecutando la Deployment.

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

    Parameter description

    • NAME: Nombre de la aplicación que se ejecuta en el pod.
    • READY: indica el número de cargas de trabajo disponibles. El valor se muestra como "the number of available pods/the number of expected pods".
    • UP-TO-DATE: indica el número de réplicas que se han actualizado.
    • AVAILABLE: indica el número de pods disponibles.
    • AGE: período en el que la Deployment sigue ejecutándose

  5. Si se accede a la Deployment con un Service de ClusterIP o de NodePort, agregue el Service correspondiente. Para obtener más información, véase Red.