En este tema se describe cómo implementar la extensión TKG v1.3.1 para Fluent Bit. Fluent Bit es un reenviador y procesador de registros rápido y ligero que le permite recopilar registros y datos de aplicaciones de diferentes orígenes, así como unificarlos y enviarlos a varios destinos. Implemente la extensión TKG para que Fluent Bit recopile y reenvíe registros de clústeres de Tanzu Kubernetes al destino de su elección.
Requisitos previos de la extensión
- Aprovisionar un clúster. Consulte Flujo de trabajo para aprovisionar clústeres de Tanzu Kubernetes mediante la API v1alpha2 de TKGS.
- Conéctese al clúster. Consulte Conectarse a un clúster de Tanzu Kubernetes como usuario de vCenter Single Sign-On.
- Descargar el paquete de extensiones TKG v1.3.1 Al host cliente en el que se ejecuta kubectl.
- Instalar los requisitos previos de las extensiones TKG en el clúster de destino.
Implementar la extensión Fluent Bit
Contenedor | Tipo de recurso | Réplicas | Descripción |
---|---|---|---|
Fluent Bit | DaemonSet | 6 | Recopilador de registros, agregador, reenviador |
- Compruebe que completó cada uno de los requisitos previos de extensión. Consulte Requisitos previos de la extensión.
- Cambie el directorio a la extensión Fluent Bit.
cd /tkg-extensions-v1.3.1+vmware.1/extensions/logging/fluent-bit
- Cree el espacio de nombres
tanzu-system-logging
, así como los objetos de función y la cuenta de servicio de Fluent Bit.kubectl apply -f namespace-role.yaml
- Decida qué destino de registro utilizará para Fluent Bit. Entre los resultados admitidos se incluyen Elasticsearch, HTTP, Kafka, Splunk y Syslog. Consulte https://docs.fluentbit.io/manual/pipeline/outputs para obtener más información.
- Cree un archivo de valores de datos de Fluent Bit para el destino de registro elegido copiando uno de los archivos
<LOG_BACKEND>/fluent-bit-data-values.example.yaml
.Hay un archivo de valores de datos de ejemplo para cada destino de registro compatible. El ejemplo proporciona la configuración mínima para ese destino de registro.cp elasticsearch/fluent-bit-data-values.yaml.example elasticsearch/fluent-bit-data-values.yaml
cp http/fluent-bit-data-values.yaml.example http/fluent-bit-data-values.yaml
cp kafka/fluent-bit-data-values.yaml.example kafka/fluent-bit-data-values.yaml
cp splunk/fluent-bit-data-values.yaml.example splunk/fluent-bit-data-values.yaml
cp syslog/fluent-bit-data-values.yaml.example syslog/fluent-bit-data-values.yaml
- Configure la extensión Fluent Bit. Para ello, rellene
<LOG_BACKEND>/fluent-bit-data-values.yaml
. Consulte Configurar la extensión Fluent Bit para ver una descripción de los campos y las opciones.Por ejemplo, la configuración de syslog de Fluent Bit requiere los siguientes valores:logging: image: repository: projects.registry.vmware.com/tkg # Public registry tkg: instance_name: "<TKG_INSTANCE_NAME>" #mandatory but arbitrary; appears in logs cluster_name: "<CLUSTER_NAME>" #name of the target tkgs cluster fluent_bit: output_plugin: "syslog" syslog: host: "<SYSLOG_HOST>" port: "<SYSLOG_PORT>" mode: "<SYSLOG_MODE>" format: "<SYSLOG_FORMAT>"
Un archivo de valores de datos rellenado para syslog de Fluent Bit podría tener la siguiente configuración:logging: image: repository: projects.registry.vmware.com/tkg tkg: instance_name: "tkgs-cluster-1" cluster_name: "tkgs-cluster-1" fluent_bit: output_plugin: "syslog" syslog: host: "10.192.175.59" port: "514" mode: "tcp" format: "rfc5424"
- Cree un secreto de Fluent Bit con valores de datos para el destino de registro.
kubectl create secret generic fluent-bit-data-values --from-file=values.yaml=elasticsearch/fluent-bit-data-values.yaml -n tanzu-system-logging
kubectl create secret generic fluent-bit-data-values --from-file=values.yaml=kafka/fluent-bit-data-values.yaml -n tanzu-system-logging
kubectl create secret generic fluent-bit-data-values --from-file=values.yaml=splunk/fluent-bit-data-values.yaml -n tanzu-system-logging
kubectl create secret generic fluent-bit-data-values --from-file=values.yaml=http/fluent-bit-data-values.yaml -n tanzu-system-logging
kubectl create secret generic fluent-bit-data-values --from-file=values.yaml=syslog/fluent-bit-data-values.yaml -n tanzu-system-logging
secret/fluent-bit-data-values
se crea en el espacio de nombrestanzu-system-logging
. Verifique con el siguiente comando:kubectl get secrets -n tanzu-system-logging
- Implemente la aplicación Fluent Bit.
kubectl apply -f fluent-bit-extension.yaml
Si todo es correcto, debería ver
app.kappctrl.k14s.io/fluent-bit created
. - Compruebe el estado de la aplicación Fluent Bit.
kubectl get app fluent-bit -n tanzu-system-logging
Si es correcto, el estado debe cambiar deReconciling
aReconcile succeeded
. Si el estado esReconcile failed
, consulte Solucionar problemas generados en la implementación de Fluent Bit. - Vea el estado detallado de la aplicación.
kubectl get app fluent-bit -n tanzu-system-logging -o yaml
- Compruebe el DaemonSet de Fluent Bit.
kubectl get daemonsets -n tanzu-system-logging
Si es correcto, debería ver lo siguiente:NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE fluent-bit 6 6 6 6 6 <none> 105s
Solucionar problemas generados en la implementación de Fluent Bit
Si se produce un error en la implementación o la reconciliación, ejecute kubectl get pods -A
para ver el estado del pod. Los pods de fluent-bit
deben tener el estado Running
. Si el estado de un pod es ImagePullBackOff
o ImageCrashLoopBackOff
, no se podrá extraer la imagen del contenedor. Compruebe la URL del registro en los valores de datos y los archivos YAML de extensión, y asegúrese de que sean precisos.
name-XXXX
es el nombre único del pod que puede ver cuando ejecuta
kubectl get pods -A
:
kubectl logs pod/fluent-bit-XXXXX -c fluent-bit -n tanzu-system-logging
Actualizar la extensión de Fluent Bit
Actualice la extensión de Fluent Bit que está implementada en el clúster de Tanzu Kubernetes.
- Obtenga los valores de datos de Fluent Bit del secreto.
kubectl get secret fluent-bit-data-values -n tanzu-system-logging -o 'go-template={{ index .data "values.yaml" }}' | base64 -d > fluent-bit-data-values.yaml
- Actualice los valores de datos de Fluent Bit en
fluent-bit-data-values.yaml
. Consulte Configurar la extensión Fluent Bit. - Actualice el secreto de los valores de datos de Fluent Bit.
kubectl create secret generic fluent-bit-data-values --from-file=values.yaml=fluent-bit-data-values.yaml -n tanzu-system-logging -o yaml --dry-run | kubectl replace -f-
La extensión de Fluent Bit se conciliará de nuevo con los valores de datos anteriores.Nota: De forma predeterminada, kapp-controller sincronizará las aplicaciones cada 5 minutos. La actualización debería tener efecto en 5 minutos o menos. Si desea que la actualización se aplique inmediatamente, cambie los valores desyncPeriod
enfluent-bit-extension.yaml
a un valor menor y aplique la extensión de Fluent Bit mediantekubectl apply -f fluent-bit-extension.yaml
. - Compruebe el estado de la extensión.
kubectl get app fluent-bit -n tanzu-system-logging
- Vea el estado detallado y solucione los problemas.
kubectl get app fluent-bit -n tanzu-system-logging -o yaml
- Solucione los problemas en caso necesario. Consulte Solucionar problemas generados en la implementación de Fluent Bit.
Eliminar la extensión Fluent Bit
- Cambie el directorio a la extensión Fluent Bit.
cd extensions/logging/fluent-bit/
- Elimine la aplicación Fluent Bit.
kubectl delete app fluent-bit -n tanzu-system-logging
Resultado esperado:
app.kappctrl.k14s.io "fluent-bit" deleted
. - Compruebe que el aplicación Fluent Bit se haya eliminado.
kubectl get app fluent-bit -n tanzu-system-logging
Resultado esperado:
apps.kappctrl.k14s.io "fluent-bit" not found
. - Elimine el espacio de nombres
tanzu-system-logging
, así como los objetos de función y la cuenta de servicio de la extensión Fluent Bit.kubectl delete -f namespace-role.yaml
Actualizar la extensión de Fluent Bit
- Exporte el mapa de configuración de Fluent Bit.
kubectl get configmap fluent-bit -n tanzu-system-logging -o 'go-template={{ index .data "fluent-bit.yaml" }}' > fluent-bit-configmap.yaml
- Elimine la implementación existente de Fluent Bit. Consulte Eliminar la extensión Fluent Bit.
- Implemente la última extensión Fluent Bit. Consulte Implementar la extensión Fluent Bit.
Configurar la extensión Fluent Bit
extensions/logging/fluent-bit/<LOG_BACKEND>/fluent-bit-data-values.yaml
.
Parámetro | Descripción | Tipo | Predeterminado |
---|---|---|---|
logging.namespace | Espacio de nombres en el que se implementará Fluent Bit | string | tanzu-system-logging |
logging.service_account_name | Nombre de la cuenta del servicio Fluent Bit | string | fluent-bit |
logging.cluster_role_name | Nombre de la función de clúster que otorga permisos para obtener, ver y enumerar Fluent Bit | string | fluent-bit-read |
logging.image.name | Nombre de la imagen de Fluent Bit | string | fluent-bit |
logging.image.tag | Etiqueta de la imagen de Fluent Bit. Es posible que este valor tenga que actualizarse si va a actualizar la versión. | string | v1.6.9_vmware.1 |
logging.image.repository | Ubicación del repositorio con la imagen de Fluent Bit. El valor predeterminado es el registro de VMware público. Cambie este valor si utiliza un repositorio privado (p. ej., un entorno aislado). | string | projects.registry.vmware.com/tkg |
logging.image.pullPolicy | Directiva de extracción de imágenes de Fluent Bit | string | IfNotPresent |
logging.update_strategy | Estrategia de actualización que se utilizará al actualizar DaemonSet | string | RollingUpdate |
tkg.cluster_name | Nombre del clúster de Tanzu Kubernetes | string | Nulo (parámetro obligatorio) |
tkg.instance_name | Nombre definido por el usuario de la instancia de TKG compartida por el clúster supervisor y todos los clústeres de Tanzu Kubernetes en una implementación. Puede utilizar cualquier nombre relacionado con la instalación. | string | Nulo (parámetro obligatorio)
Nota: Este campo es obligatorio pero arbitrario. Es un nombre que aparece en los registros.
|
fluent_bit.log_level | Nivel de registro que se utilizará para Fluent Bit | string | info |
fluent_bit.output_plugin | Establezca el back-end en el que Fluent Bit debería vaciar la información que recopila | string | Nulo (parámetro obligatorio) |
fluent_bit.elasticsearch.host | Dirección IP o nombre de host de la instancia Elasticsearch de destino | string | Nulo (parámetro obligatorio cuando output_plugin es una búsqueda elástica) |
fluent_bit.elasticsearch.port | Puerto TCP de la instancia Elasticsearch de destino | entero | Nulo (parámetro obligatorio cuando output_plugin es una búsqueda elástica) |
fluent_bit.elasticsearch.buffer_size | Especifique el tamaño de búfer utilizado para leer la respuesta del servicio Elasticsearch. Se establece en ilimitado si es False | string | False |
fluent_bit.elasticsearch.tls | Especifique la configuración predeterminada de TLS para Elasticsearch | string | Desactivado |
fluent_bit.kafka.broker_service_name | Lista única o múltiple de Kafka Brokers; por ejemplo, 192.168.1.3:9092 | string | Nulo (parámetro obligatorio cuando output_plugin es kafka) |
fluent_bit.kafka.topic_name | Entrada única o lista de temas separados por (,) que Fluent Bit usará para enviar mensajes a Kafka | string | Nulo (parámetro obligatorio cuando output_plugin es kafka) |
fluent_bit.splunk.host | Dirección IP o nombre de host del servidor Splunk de destino | string | Nulo (parámetro obligatorio cuando output_plugin es splunk) |
fluent_bit.splunk.port | Puerto TCP del servidor Splunk de destino | entero | Nulo (parámetro obligatorio cuando output_plugin es splunk) |
fluent_bit.splunk.token | Especifica el token de autenticación de la interfaz del recopilador de eventos HTTP | string | Nulo (parámetro obligatorio cuando output_plugin es splunk) |
fluent_bit.http.host | Dirección IP o nombre de host del servidor HTTP de destino | string | Nulo (parámetro obligatorio cuando output_plugin es http) |
fluent_bit.http.port | Puerto TCP del servidor HTTP de destino | entero | Nulo (parámetro obligatorio cuando output_plugin es http) |
fluent_bit.http.mode | Especificar un URI HTTP para el servidor web de destino | string | Nulo (parámetro obligatorio cuando output_plugin es http) |
fluent_bit.http.header_key_value | Par clave/valor de encabezado HTTP. Se pueden establecer varios encabezados | string | Nulo (parámetro obligatorio cuando output_plugin es http) |
fluent_bit.http.format | Especifica el formato de datos que se utilizará en el cuerpo de la solicitud HTTP | string | Nulo (parámetro obligatorio cuando output_plugin es http) |
fluent_bit.syslog.host | Dominio o dirección IP del servidor Syslog remoto | string | Nulo (parámetro obligatorio cuando output_plugin es syslog) |
fluent_bit.syslog.port | Puerto TCP o UDP del servidor Syslog remoto | entero | Nulo (parámetro obligatorio cuando output_plugin es syslog) |
fluent_bit.syslog.mode | Especifique el tipo de transporte de TCP, UDP y TLS | string | Nulo (parámetro obligatorio cuando output_plugin es syslog) |
fluent_bit.syslog.format | Especifica el formato de datos que se utilizará en el cuerpo de la solicitud HTTP | string | Nulo (parámetro obligatorio cuando output_plugin es syslog) |
host_path.volume_1 | Ruta de directorio desde el sistema de archivos del nodo host hacia el pod, para el volumen 1 | string | /var/log |
host_path.volume_2 | Ruta de directorio desde el sistema de archivos del nodo host hacia el pod, para el volumen 2 | string | /var/lib/docker/containers |
host_path.volume_3 | Ruta de directorio desde el sistema de archivos del nodo host hacia el pod, para el volumen 3 | string | /run/log |
systemd.path | Ruta de acceso al directorio de diario Systemd | string | /var/log/journal |