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

dolphin

Presentación

dolphin es un complemento para monitorear y gestionar el tráfico de red contenedor. dolphin de la versión actual puede recopilar estadísticas de tráfico de Kata y los contenedores comunes en clústeres de CCE Turbo.

Este complemento recopila cuántos paquetes de IPv4 y bytes se reciben y envían (incluidos los enviados a la red pública). PodSelectors se puede usar para seleccionar backends de monitoreo para admitir múltiples tareas de monitoreo y métricas de monitoreo opcionales. También puede obtener información sobre la etiqueta de los pods. La información de seguimiento se ha adaptado al formato de Prometheus. Puede invocar a la API de Prometheus para ver los datos de monitoreo.

Restricciones

  • Este complemento solo se puede instalar en clústeres de CCE Turbo de la versión 1.19 o posterior. Sus pods solo se pueden desplegar en nodos que ejecuten EulerOS y no se pueden desplegar en los nodos de Arm.\
  • Este complemento se puede instalar en nodos que utilizan containerd o el motor de contenedor de Docker. En los nodos de containerd, puede rastrear las actualizaciones de pod en tiempo real. En los nodos de Docker, puede consultar actualizaciones de pod en modo de sondeo.
  • Solo se pueden recopilar estadísticas de tráfico de contenedores seguro (Kata como el tiempo de ejecución contenedor) y contenedores comunes (runC como el tiempo de ejecución contenedor) en un clúster de CCE Turbo.
  • Después de instalar el complemento, el tráfico no se supervisa de forma predeterminada. Es necesario crear un CR para configurar una tarea de supervisión para la supervisión del tráfico.
  • Asegúrese de que hay suficientes recursos en un nodo para instalar el complemento.
  • El origen de las etiquetas de supervisión y de las etiquetas de usuario debe estar disponible antes de crear un pod.

Instalación del complemento

  1. Inicie sesión en la consola de CCE. En el panel de navegación, elija Add-ons. En la página Add-ons, haga clic en Install bajo dolphin.
  2. En la página Install Add-on, seleccione un clúster en el paso Basic Information.

Entrega de una tarea de supervisión

Puede entregar una tarea de supervisión mediante la creación de un CR. Actualmente, se puede crear un CR invocando a una API o usando el comando kubectl apply después de iniciar sesión en un nodo de trabajo. En versiones posteriores, se puede crear un CR en la consola. Un CR representa una tarea de monitorización y proporciona parámetros opcionales como selector, podLable y ip4Tx. Para obtener más información, consulte la plantilla de creación de CR a continuación.

apiVersion: crd.dolphin.io/v1
kind: MonitorPolicy
metadata:
    name: example-task            # Monitoring task name.
    namespace: kube-system        # The value must be kube-system. This field is mandatory.
spec:
    selector:                     # (Optional) Backend monitored by the dolphin add-on, for example, labelSelector. By default, all containers on the node are monitored.
    matchLabels:
      app: nginx
    matchExpressions:
      - key: app
        operator: In
        values:
          - nginx
  podLable: [app]               # (Optional) Pod label.
  ip4Tx:                        # (Optional) Indicates whether to collect statistics about the number of sent IPv4 packets and the number of sent IPv4 bytes. This function is disabled by default.
    enable: true
    ip4Rx:                        # (Optional) Indicates whether to collect statistics about the number of received IPv4 packets and the number of received IPv4  bytes. This function is disabled by default.
    enable: true
    ip4TxInternet:                # (Optional) Indicates whether to collect statistics about the number of sent IPv4 packets and the number of sent IPv4  bytes. This function is disabled by default.
    enable: true

PodLable: Puede introducir las etiquetas de varios pods y separarlos con comas (,), por ejemplo, [app, version].

Las etiquetas deben cumplir con las siguientes reglas. La expresión regular correspondiente es (^[a-zA-Z_]$)|(^([a-zA-Z][a-zA-Z0-9_]|_[a-zA-Z0-9])([a-zA-Z0-9_]){0,254}$).

  • Se puede introducir un máximo de cinco etiquetas. Cada etiqueta contiene un máximo de 256 caracteres.
  • El valor no puede comenzar con un dígito o guiones bajos dobles (_).
  • El formato de una sola etiqueta debe cumplir con A-Za-z_0-9.
Ejemplo 1
apiVersion: crd.dolphin.io/v1
kind: MonitorPolicy
metadata:
  name: example-task  
  namespace: kube-system        
spec:
  podLable: [app]
  ip4Tx:
    enable: true

En el ejemplo anterior, el nombre de la tarea de supervisión es example-task, que supervisa todos los pods de un nodo y genera el número de paquetes de IPv4 enviados y el número de bytes enviados. Si el contenedor monitorizado contiene la etiqueta app, la información de clave-valor de la etiqueta correspondiente se lleva en las métricas de monitorización. De lo contrario, el valor de la etiqueta correspondiente es not found.

Ejemplo 2
apiVersion: crd.dolphin.io/v1
kind: MonitorPolicy
metadata:
  name: example-task
  namespace: kube-system
spec:
  selector:
    matchLabels:
      app: nginx
  podLable: [test, app]
  ip4Tx:
    enable: true
  ip4Rx:
    enable: true
  ip4TxInternet:      
    enable: true

En el ejemplo anterior, el nombre de la tarea de monitorización es example-task, que monitoriza todos los pods que cumplen con el labelelector con app=nginx en un nodo y genera las seis métricas. Si el contenedor monitorizado contiene etiquetas test y app, la información clave-valor de la etiqueta correspondiente se lleva en las métricas de monitorización. De lo contrario, el valor de la etiqueta correspondiente es not found.

Puede crear, modificar y eliminar tareas de supervisión en el formato anterior. Actualmente, se pueden crear un máximo de 10 tareas de monitorización. Cuando varias tareas de monitoreo coinciden con el mismo backend de monitoreo, cada backend de monitoreo genera la métrica de monitoreo específica para el número de tareas de monitoreo.

  • Si modifica o elimina una tarea de supervisión, se perderán los datos de supervisión recopilados por la tarea de supervisión. Por lo tanto, realice esta operación con precaución.
  • Después de desinstalar el complemento, se quita el CR de la tarea de supervisión junto con el complemento.

Comprobación de estadísticas de tráfico

Los datos de seguimiento recopilados por este complemento se exportan en formato de exportador de Prometheus, que se pueden obtener de cualquiera de las siguientes maneras:

  • Instale el complemento de prometheus, que se interconecta automáticamente con el complemento dolphin y recopila periódicamente información de monitoreo.
  • Acceda directamente al puerto de servicio 10001 proporcionado por el complemento dolphin, por ejemplo, http://{POD_IP}:10001/metrics.

Tenga en cuenta que si accede al puerto de servicio dolphin en un nodo, debe permitir el acceso desde el grupo de seguridad del nodo y el pod.

Puede instalar el complemento prometheus para ver la información de supervisión. Para obtener más información sobre cómo usar el complemento de prometheus, consulte Monitoreo de métricas personalizadas con prometheus.

Tabla 1 Métricas de monitorización admitidas

Métrica

Parámetro

Número de paquetes de IPv4 enviados a la red pública

ip4_send_pkt_internet

Número de bytes de IPv4 enviados a la red pública

ip4_send_byte_internet

Número de paquetes de IPv4 recibidos

ip4_rcv_pkt

Número de bytes de IPv4 recibidos

ip4_rcv_byte

Número de paquetes de IPv4 enviados

ip4_send_pkt

Número de bytes de IPv4 enviados

ip4_send_byte

  • Ejemplo 1 (número de paquetes de IPv4 enviados a la red pública):
    dolphin_ip4_send_pkt_internet{app="nginx",pod="default/nginx-66c9c65dbf-zjg24",task="kube-system/example-task "} 241

    En el ejemplo anterior, el espacio de nombres del pod es default, el nombre del pod es nginx-66c9c65dbf-zjg24, la etiqueta es app y el valor es nginx. Esta métrica se crea mediante example-task de tareas de supervisión, y el número de paquetes de IPv4 enviados por el pod a la red pública es de 241.

  • Ejemplo 2 (número de bytes de IPv4 enviados a la red pública):
    dolphin_ip4_send_byte_internet{app="nginx",pod="default/nginx-66c9c65dbf-zjg24",task="kube-system/example-task" } 23618

    En el ejemplo anterior, el espacio de nombres del pod es default, el nombre del pod es nginx-66c9c65dbf-zjg24, la etiqueta es app y el valor es nginx. Esta métrica se crea mediante example-task de tareas de supervisión, y el número de bytes de IPv4 enviados por el pod a la red pública es 23618.

  • Ejemplo 3 (número de paquetes de IPv4 enviados):
    dolphin_ip4_send_pkt{app="nginx",pod="default/nginx-66c9c65dbf-zjg24",task="kube-system/example-task "} 379

    En el ejemplo anterior, el espacio de nombres del pod es default, el nombre del pod es nginx-66c9c65dbf-zjg24, la etiqueta es app y el valor es nginx. Esta métrica se crea mediante las tareas de supervisión example-task, y el número de paquetes de IPv4 enviados por el pod es 379.

  • Ejemplo 4 (número de bytes de IPv4 enviados):
    dolphin_ip4_send_byte{app="nginx",pod="default/nginx-66c9c65dbf-zjg24",task="kube-system/example-task "} 33129

    En el ejemplo anterior, el espacio de nombres del pod es default, el nombre del pod es nginx-66c9c65dbf-zjg24, la etiqueta es app y el valor es nginx. Esta métrica se crea mediante las tareas de supervisión example-task, y el número de bytes de IPv4 enviados por el pod es 33129.

  • Ejemplo 5 (número de paquetes de IPv4 recibidos):
    dolphin_ip4_rcv_pkt{app="nginx",pod="default/nginx-66c9c65dbf-zjg24",task="kube-system/example-task "} 464

    En el ejemplo anterior, el espacio de nombres del pod es default, el nombre del pod es nginx-66c9c65dbf-zjg24, la etiqueta es app y el valor es nginx. Esta métrica se crea mediante las tareas de supervisión example-task, y el número de paquetes de IPv4 recibidos por el pod es 464.

  • Ejemplo 6 (número de bytes de IPv4 recibidos):
    dolphin_ip4_rcv_byte{app="nginx",pod="default/nginx-66c9c65dbf-zjg24",task="kube-system/example-task "} 34654

    En el ejemplo anterior, el espacio de nombres del pod es default, el nombre del pod es nginx-66c9c65dbf-zjg24, la etiqueta es app y el valor es nginx. Esta métrica se crea mediante las tareas de supervisión example-task, y el número de bytes de IPv4 recibidos por el pod es 34654.

Si el contenedor no contiene la etiqueta especificada, el valor de la etiqueta en el cuerpo de la respuesta es not found. El formato es el siguiente:

dolphin_ip4_send_byte_internet{test="not found", pod="default/nginx-66c9c65dbf-zjg24",task="default" } 23618

Historial de cambios

Tabla 2 Versiones de complementos de CCE

Versión del complemento

Versión de clúster admitida

1.1.8

/v1.(19|21|23|25).*/

1.1.6

/v1.(19|21|23).*/

1.1.5

/v1.(19|21|23).*/

1.1.2

/v1.(19|21|23).*/

1.0.1

/v1.(19|21).*/