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 un DaemonSet

Escenario

CCE proporciona capacidades de despliegue y gestión para múltiples tipos de contenedores y admite funciones de cargas de trabajo de contenedor como la creación, configuración, supervisión, ajuste, actualización, desinstalación, descubrimiento de servicios y balanceo de carga.

DaemonSet garantiza que solo se ejecute un pod en todos o algunos nodos. Cuando se agrega un nodo a un clúster, también se agrega un nuevo pod para el nodo. Cuando se elimina un nodo de un clúster, el pod también se recupera. Si se elimina un DaemonSet, se eliminarán todos los pods creados por él.

Los escenarios de aplicación típicos de un DaemonSet son los siguientes:

  • Ejecute el daemon de almacenamiento de clúster, como glusterd o Ceph, en cada nodo.
  • Ejecute el daemon de colección de logs, como Fluentd o Logstash, en cada nodo.
  • Ejecute el daemon de supervisión, como Prometheus Node Exporter, collectd, Datadog agent, New Relic agent o Ganglia (gmond), en cada nodo.

Puede desplegar un DaemonSet para cada tipo de daemons en todos los nodos o desplegar varios DaemonSets para el mismo tipo de daemons. En el segundo caso, los DaemonSets tienen diferentes indicadores y diferentes requisitos en la memoria y la CPU para diferentes tipos de hardware.

Requisitos previos

Antes de crear un DaemonSet 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.

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.

    Informaciones básicas
    • Workload Type: Seleccione DaemonSet. 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.
    • 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 Servicio, 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-daemonset.yaml. nginx-daemonset.yaml es un nombre de archivo de ejemplo, y puede cambiarlo según sea necesario.

    vi nginx-daemonset.yaml

    El contenido del archivo de descripción es el siguiente: A continuación se proporciona un ejemplo. Para obtener más información sobre DaemonSets, consulte Documentos de Kubernetes.

    apiVersion: apps/v1
    kind: DaemonSet
    metadata:
      name: nginx-daemonset
      labels:
        app: nginx-daemonset
    spec:
      selector:
        matchLabels:
          app: nginx-daemonset
      template:
        metadata:
          labels:
            app: nginx-daemonset
        spec:
          nodeSelector:                 # Node selection. A pod is created on a node only when the node meets daemon=need.
            daemon: need
          containers:
          - name: nginx-daemonset
            image: nginx:alpine
            resources:
              limits:
                cpu: 250m
                memory: 512Mi
              requests:
                cpu: 250m
                memory: 512Mi
          imagePullSecrets:
          - name: default-secret

    El parámetro replicas usado para definir una Deployment o StatefulSet no existe en la configuración anterior para un DaemonSet porque cada nodo tiene solo una réplica. Está arreglado.

    El nodeSelector de la plantilla de pod anterior especifica que un pod solo se crea en los nodos que cumplen con daemon=need como se muestra en la siguiente figura. Si desea crear un pod en cada nodo, elimine la etiqueta.

  3. Cree un DaemonSet.

    kubectl create -f nginx-daemonset.yaml

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

    daemonset.apps/nginx-daemonset created

  4. Consulte el estado DaemonSet.

    kubectl get ds

    $ kubectl get ds
    NAME              DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
    nginx-daemonset   1         1         0       1            0           daemon=need     116s

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