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
- 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.
- 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.
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.
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.
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
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).*/ |