Las comprobaciones de estado son una forma de probar y monitorizar el funcionamiento de tus clústeres. Las comprobaciones del estado se ejecutan por sí solas de forma periódica. También puedes usar
gkectl diagnose cluster
para realizar comprobaciones de estado bajo demanda. En este documento se describe cada comprobación, en qué circunstancias se ejecuta automáticamente, cómo y cuándo ejecutarla manualmente, y cómo interpretar los resultados.
¿Qué se comprueba?
Hay dos categorías de comprobaciones de estado de Google Distributed Cloud:
Comprobaciones de máquinas de nodos
Comprobaciones en todo el clúster
En las siguientes secciones se indica qué se comprueba en cada categoría. Estas comprobaciones se usan tanto para las comprobaciones del estado periódicas como para las que se realizan bajo demanda.
Comprobaciones de máquinas de nodos
En esta sección se describe lo que evalúan las comprobaciones del estado de las máquinas de nodo. Estas comprobaciones confirman que las máquinas de los nodos están configuradas correctamente y que tienen suficientes recursos y conectividad para crear clústeres, actualizar clústeres y operar clústeres.
Estas comprobaciones corresponden a los recursos personalizados de Bare Metal HealthCheck
llamados bm-system-NODE_IP_ADDRESS-machine
(por ejemplo, bm-system-192.0.2.54-machine
) que se ejecutan en el clúster de administrador en el espacio de nombres del clúster. Para obtener más información sobre los recursos de comprobación del estado, consulta los HealthCheck
recursos personalizados.
Las comprobaciones habituales de las máquinas consisten en lo siguiente:
Las máquinas del clúster usan un sistema operativo compatible.
La versión del SO es compatible.
El SO usa una versión del kernel compatible.
El kernel tiene habilitada la opción del compilador Just-in-Time (JIT) de BPF (
CONFIG_BPF_JIT=y
).En Ubuntu, el cortafuegos Uncomplicated Firewall (UFW) está inhabilitado.
Los nodos cumplen los requisitos mínimos de CPU.
Las máquinas de los nodos tienen más del 20% de los recursos de CPU disponibles.
Los equipos de nodos cumplen los requisitos mínimos de memoria.
Los nodos cumplen los requisitos mínimos de almacenamiento en disco.
La sincronización de la hora está configurada en las máquinas de los nodos.
La ruta predeterminada para enrutar paquetes a la pasarela predeterminada está presente en los nodos.
El sistema de nombres de dominio (DNS) funciona correctamente (esta comprobación se omite si el clúster está configurado para ejecutarse detrás de un proxy).
Si el clúster está configurado para usar una réplica de registro, se puede acceder a ella.
Las comprobaciones de la máquina Google Cloud consisten en lo siguiente:
Se puede acceder a Artifact Registry,
gcr.io
(esta comprobación se omite si el clúster está configurado para usar un mirror del registro).Se puede acceder a las APIs de Google.
Las comprobaciones del estado de las máquinas constan de lo siguiente:
kubelet
está activo y en ejecución en máquinas de nodos.containerd
está activo y en ejecución en máquinas de nodos.El estado del endpoint de comprobación del estado de Container Network Interface (CNI) es correcto.
Los CIDRs de los pods no se solapan con las direcciones IP de las máquinas de los nodos.
Comprobaciones en todo el clúster
En esta sección se describe qué evalúan las comprobaciones de estado de un clúster.
Comprobaciones predeterminadas
Las comprobaciones predeterminadas del clúster, que se ejecutan automáticamente como parte de las comprobaciones periódicas del estado, también se pueden ejecutar bajo demanda como parte de las comprobaciones del estado del clúster. Estas comprobaciones aseguran que los recursos del clúster de Kubernetes estén configurados correctamente y funcionen bien.
Estas comprobaciones corresponden a los recursos personalizados de Bare Metal HealthCheck
bm-system-default-*
llamados resources que se ejecutan en el clúster de administración en el espacio de nombres del clúster. Para obtener más información sobre los recursos de comprobación del estado, consulta los HealthCheck
recursos personalizados.
Las comprobaciones de clúster predeterminadas auditan los siguientes tipos de recursos y condiciones:
DaemonSet
- Las configuraciones son válidas
- Los DaemonSets están en buen estado
Implementación
- Las configuraciones son válidas
- Las implementaciones están en buen estado
Nodo (todas las condiciones siguientes son condiciones de nodo)
- Estado de preparación del nodo
- Presión de disco de kubelet
- Presión de memoria de kubelet
- Presión del ID de proceso (PID) de kubelet
- Frecuencia de reinicio de kubelet
- kubelet está en buen estado
- Disponibilidad de la red
- Función containerd
- Frecuencia de reinicio de containerd
- Función Overlay2 de Docker
- Frecuencia de reinicio de Docker
- Frecuencia de eventos de anulación del registro de dispositivos de red
- Bloqueos del kernel
- KubeProxy está en buen estado
- Sistema de archivos de solo lectura
Pod
- Las configuraciones son válidas
- Los pods están en buen estado
- Los contenedores están en buen estado
PodDisruptionBudget (PDB)
- Las configuraciones son válidas
- Función de tiempo de ejecución de PDB
- Los PDBs coinciden con los pods
- Pods no gestionados por varios PDBs
Solicitudes de recursos
- Los pods de los nodos de destino tienen solicitudes de CPU y memoria definidas
- La media de solicitudes de recursos por nodo está dentro del límite registrado.
Servicio
- Las configuraciones son válidas
- Los servicios están en buen estado
StatefulSet
- Las configuraciones son válidas
- StatefulSet
Comprobaciones de red
Las siguientes comprobaciones de la red de nodos del clúster del lado del cliente se ejecutan automáticamente como parte de las comprobaciones periódicas del estado. Las comprobaciones de red no se pueden ejecutar bajo demanda. Estas comprobaciones se corresponden con los recursos personalizados de Bare Metal HealthCheck
llamados bm-system-network
, que se ejecutan en el clúster de administración en el espacio de nombres del clúster. Para obtener más información sobre los recursos de comprobación del estado, consulta HealthCheck
recursos personalizados.
Si el clúster usa el balanceo de carga agrupado, los nodos del grupo de nodos de balanceo de carga deben tener conectividad del protocolo de resolución de direcciones (ARP) de la capa 2. Se requiere ARP para la detección de VIP.
Los nodos del plano de control tienen los puertos 8443 y 8444 abiertos para que los use GKE Identity Service.
Los nodos del plano de control tienen los puertos 2382 y 2383 abiertos para que los use la instancia
etcd-events
.
Kubernetes
Las comprobaciones de Kubernetes, que se ejecutan automáticamente como parte de las comprobaciones de estado previas y periódicas, también se pueden ejecutar bajo demanda. Estas comprobaciones de estado no devuelven un error si falta alguno de los componentes del plano de control que se indican. La comprobación solo devuelve errores si los componentes existen y tienen errores en el momento de la ejecución del comando.
Estas comprobaciones corresponden a los recursos personalizados de Bare Metal HealthCheck
bm-system-kubernetes
llamados resources que se ejecutan en el clúster de administración en el espacio de nombres del clúster. Para obtener más información sobre los recursos de comprobación del estado, consulta los HealthCheck
recursos personalizados.
El servidor de la API funciona correctamente.
El operador
anetd
está configurado correctamente.Todos los nodos del plano de control funcionan correctamente.
Los siguientes componentes del plano de control funcionan correctamente:
anthos-cluster-operator
controller-manager
cluster-api-provider
ais
capi-kubeadm-bootstrap-system
cert-manager
kube-dns
Complementos
Las comprobaciones de complementos se ejecutan automáticamente como parte de las comprobaciones previas y de las comprobaciones de estado periódicas, y se pueden ejecutar a petición. Esta comprobación del estado no devuelve ningún error si falta alguno de los complementos de la lista. La comprobación solo devuelve errores si los complementos existen y tienen errores en el momento de la ejecución del comando.
Estas comprobaciones corresponden a los recursos personalizados de Bare Metal HealthCheck
bm-system-add-ons*
que se ejecutan en el clúster de administración en el espacio de nombres del clúster. Para obtener más información sobre los recursos de comprobación del estado, consulta los HealthCheck
recursos personalizados.
Los componentes de Stackdriver de Cloud Logging y el agente de conexión funcionan correctamente:
stackdriver-log-aggregator
stackdriver-log-forwarder
stackdriver-metadata-agent
stackdriver-prometheus-k8
gke-connect-agent
Los recursos gestionados por Google Distributed Cloud no muestran cambios manuales (desviación de la configuración):
Los valores de los campos no se han actualizado
No se han añadido ni quitado campos opcionales
No se han eliminado los recursos
Si la comprobación de estado detecta una desviación de la configuración, el valor Status.Pass
del recurso personalizado bm-system-add-ons
Bare Metal
HealthCheck
se establece en false
. El campo Description
de la sección Failures
contiene detalles sobre los recursos que han cambiado, incluida la siguiente información:
Version
: la versión de la API del recurso.Kind
: el esquema del objeto, comoDeployment
, del recurso.Namespace
: el espacio de nombres en el que se encuentra el recurso.Name
: el nombre del recurso.Diff
: comparación en formato de cadena de las diferencias entre el manifiesto del recurso registrado y el manifiesto del recurso modificado.
HealthCheck
recursos personalizados
Cuando se ejecuta una comprobación del estado, Google Distributed Cloud crea un recurso personalizado HealthCheck
. Los recursos personalizados HealthCheck
son persistentes y proporcionan un registro estructurado de las actividades y los resultados de las comprobaciones del estado. Hay dos categorías de
HeathCheck
recursos personalizados:
Recursos personalizados de Bare Metal
HealthCheck
(API Version: baremetal.cluster.gke.io/v1
): estos recursos proporcionan detalles sobre las comprobaciones de estado periódicas. Estos recursos se encuentran en el clúster de administrador en los espacios de nombres del clúster. Los recursos de Bare MetalHealthCheck
se encargan de crear tareas cron y tareas de comprobación de estado. Estos recursos se actualizan constantemente con los resultados más recientes.Recursos personalizados de Anthos
HealthCheck
(API Version: anthos.gke.io/v1
): estos recursos se usan para registrar métricas de comprobación de estado. Estos recursos se encuentran en el espacio de nombreskube-system
de cada clúster. Las actualizaciones de estos recursos se realizan con el máximo esfuerzo. Si una actualización falla debido a un problema, como un error de red transitorio, se ignora el fallo.
En la siguiente tabla se enumeran los tipos de recursos que se crean para cada categoría:HealthCheck
Comprobaciones de estado de Bare Metal | Comprobaciones de estado de Anthos | Gravedad |
---|---|---|
Tipo: predeterminado Nombre: Nombre: Nombre: Nombre: Nombre: Nombre: Nombre: Nombre: |
Tipo: predeterminado Nombre: Nombre: Nombre: Nombre: Nombre: Nombre: Nombre: Nombre: |
Crítica |
Tipo: machine
Nombre: |
Tipo: machine
Nombre: |
Crítica |
Tipo: network
Nombre: |
Tipo: network
Nombre: |
Crítica |
Tipo: kubernetes
Nombre: |
Tipo: kubernetes
Nombre: |
Crítica |
Tipo: complementos
Nombre: |
Tipo: complementos
Nombre:
Nombre: |
Opcional |
Para consultar el estado de HealthCheck
, sigue estos pasos:
Para leer los resultados de las comprobaciones de estado periódicas, puedes obtener los recursos personalizados asociados:
kubectl get healthchecks.baremetal.cluster.gke.io \ --kubeconfig ADMIN_KUBECONFIG \ --all-namespaces
Sustituye
ADMIN_KUBECONFIG
por la ruta del archivo kubeconfig del clúster de administrador.En el siguiente ejemplo se muestran las comprobaciones de estado que se ejecutan periódicamente y si se han superado en la última ejecución:
NAMESPACE NAME PASS AGE cluster-test-admin001 bm-system-192.0.2.52-machine true 11d cluster-test-admin001 bm-system-add-ons true 11d cluster-test-admin001 bm-system-kubernetes true 11d cluster-test-admin001 bm-system-network true 11d cluster-test-user001 bm-system-192.0.2.53-machine true 56d cluster-test-user001 bm-system-192.0.2.54-machine true 56d cluster-test-user001 bm-system-add-ons true 56d cluster-test-user001 bm-system-kubernetes true 56d cluster-test-user001 bm-system-network true 56d
Para leer los detalles de una comprobación de estado específica, usa
kubectl describe
:kubectl describe healthchecks.baremetal.cluster.gke.io HEALTHCHECK_NAME \ --kubeconfig ADMIN_KUBECONFIG \ --namespace CLUSTER_NAMESPACE
Haz los cambios siguientes:
HEALTHCHECK_NAME
: el nombre de la comprobación del estado.ADMIN_KUBECONFIG
: la ruta del archivo kubeconfig del clúster de administrador.CLUSTER_NAMESPACE
: el espacio de nombres del clúster.
Cuando revises el recurso, la sección
Status:
contendrá los siguientes campos importantes:Pass
: indica si se ha superado o no la última comprobación del estado.Checks
: contiene información sobre el trabajo de comprobación del estado más reciente.Failures
: contiene información sobre el último trabajo fallido.Periodic
: contiene información como la última vez que se programó y se instrumentó un trabajo de comprobación del estado.
El siguiente ejemplo de
HealthCheck
corresponde a una comprobación correcta de la máquina:Name: bm-system-192.0.2.54-machine Namespace: cluster-test-user001 Labels: baremetal.cluster.gke.io/periodic-health-check=true machine=192.0.2.54 type=machine Annotations: <none> API Version: baremetal.cluster.gke.io/v1 Kind: HealthCheck Metadata: Creation Timestamp: 2023-09-22T18:03:27Z ... Spec: Anthos Bare Metal Version: 1.16.0 Cluster Name: nuc-user001 Interval In Seconds: 3600 Node Addresses: 192.168.1.54 Type: machine Status: Check Image Version: 1.16.0-gke.26 Checks: 192.168.1.54: Job UID: 345b74a6-ce8c-4300-a2ab-30769ea7f855 Message: Pass: true ... Cluster Spec: Anthos Bare Metal Version: 1.16.0 Bypass Preflight Check: false Cluster Network: Bundled Ingress: true Pods: Cidr Blocks: 10.0.0.0/16 Services: Cidr Blocks: 10.96.0.0/20 ... Conditions: Last Transition Time: 2023-11-22T17:53:18Z Observed Generation: 1 Reason: LastPeriodicHealthCheckFinished Status: False Type: Reconciling Node Pool Specs: node-pool-1: Cluster Name: nuc-user001 ... Pass: true Periodic: Last Schedule Time: 2023-11-22T17:53:18Z Last Successful Instrumentation Time: 2023-11-22T17:53:18Z Start Time: 2023-09-22T18:03:28Z Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal HealthCheckJobFinished 6m4s (x2 over 6m4s) healthcheck-controller health check job bm-system-192.0.2.54-machine-28344593 finished
El siguiente ejemplo de
HealthCheck
corresponde a una comprobación de máquina fallida:Name: bm-system-192.0.2.57-machine Namespace: cluster-user-cluster1 ... API Version: baremetal.cluster.gke.io/v1 Kind: HealthCheck ... Status: Checks: 192.0.2.57: Job UID: 492af995-3bd5-4441-a950-f4272cb84c83 Message: following checks failed, ['check_kubelet_pass'] Pass: false Failures: Category: AnsibleJobFailed Description: Job: machine-health-check. Details: Target: 1192.0.2.57. View logs with: [kubectl logs -n cluster-user-test bm-system-192.0.2.57-machine-28303170-qgmhn]. Reason: following checks failed, ['check_kubelet_pass'] Pass: false Periodic: Last Schedule Time: 2023-10-24T23:04:21Z Last Successful Instrumentation Time: 2023-10-24T23:31:30Z ...
Para obtener una lista de comprobaciones de estado de las métricas, usa el siguiente comando:
kubectl get healthchecks.anthos.gke.io \ --kubeconfig CLUSTER_KUBECONFIG \ --namespace kube-system
Sustituye
CLUSTER_KUBECONFIG
por la ruta del archivo kubeconfig del clúster de destino.En el siguiente ejemplo se muestra el formato de la respuesta:
NAMESPACE NAME COMPONENT NAMESPACE STATUS LAST_COMPLETED kube-system bm-system-add-ons-add-ons Healthy 48m kube-system bm-system-add-ons-configdrift Healthy 48m kube-system bm-system-default-daemonset Healthy 52m kube-system bm-system-default-deployment Healthy 52m kube-system bm-system-default-node Healthy 52m kube-system bm-system-default-pod Healthy 52m kube-system bm-system-default-poddisruptionbudget Healthy 52m kube-system bm-system-default-resource Healthy 52m kube-system bm-system-default-service Healthy 52m kube-system bm-system-default-statefulset Healthy 57m kube-system bm-system-kubernetes Healthy 57m kube-system bm-system-network Healthy 32m kube-system component-status-controller-manager Healthy 5s kube-system component-status-etcd-0 Healthy 5s kube-system component-status-etcd-1 Healthy 5s kube-system component-status-scheduler Healthy 5s
Tareas cron de comprobación del estado
En las comprobaciones de estado periódicas, cada recurso personalizado de HealthCheck
de metal desnudo tiene un CronJob
correspondiente con el mismo nombre. Este CronJob
se encarga de programar la comprobación del estado correspondiente para que se ejecute a intervalos definidos. El CronJob
también incluye un contenedor ansible-runner
que ejecuta la comprobación de estado estableciendo una conexión Secure Shell (SSH) con los nodos.
Para obtener información sobre las tareas cron, sigue estos pasos:
Obtén una lista de las tareas cron que se han ejecutado en un clúster determinado:
kubectl get cronjobs \ --kubeconfig ADMIN_KUBECONFIG \ --namespace CLUSTER_NAMESPACE
Haz los cambios siguientes:
ADMIN_KUBECONFIG
: la ruta del archivo kubeconfig del clúster de administrador.CLUSTER_NAMESPACE
: el espacio de nombres del clúster.
En el siguiente ejemplo se muestra una respuesta típica:
NAMESPACE NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE cluster-test-admin bm-system-10.200.0.3-machine 17 */1 * * * False 0 11m 25d cluster-test-admin bm-system-add-ons 25 */1 * * * False 0 3m16s 25d cluster-test-admin bm-system-kubernetes 16 */1 * * * False 0 12m 25d cluster-test-admin bm-system-network 41 */1 * * * False 0 47m 25d
Los valores de la columna
SCHEDULE
indican la programación de cada ejecución de la tarea de comprobación del estado en sintaxis de programación. Por ejemplo, el trabajobm-system-kubernetes
se ejecuta 17 minutos después de cada hora (17
) cada hora (*/1
) de cada día (* * *
). Los intervalos de tiempo de las comprobaciones de estado periódicas no se pueden editar, pero es útil saber cuándo se supone que se deben ejecutar para solucionar problemas.Recuperar los detalles de un
CronJob
recurso personalizado específico:kubectl describe cronjob CRONJOB_NAME \ --kubeconfig ADMIN_KUBECONFIG \ --namespace CLUSTER_NAMESPACE
Haz los cambios siguientes:
ADMIN_KUBECONFIG
: la ruta del archivo kubeconfig del clúster de administrador.CLUSTER_NAMESPACE
: el espacio de nombres del clúster.
En el siguiente ejemplo se muestra una
CronJob
correcta:Name: bm-system-network Namespace: cluster-test-admin Labels: AnthosBareMetalVersion=1.16.1 baremetal.cluster.gke.io/check-name=bm-system-network baremetal.cluster.gke.io/periodic-health-check=true controller-uid=2247b728-f3f5-49c2-86df-9e5ae9505613 type=network Annotations: target: node-network Schedule: 41 */1 * * * Concurrency Policy: Forbid Suspend: False Successful Job History Limit: 1 Failed Job History Limit: 1 Starting Deadline Seconds: <unset> Selector: <unset> Parallelism: <unset> Completions: 1 Active Deadline Seconds: 3600s Pod Template: Labels: baremetal.cluster.gke.io/check-name=bm-system-network Annotations: target: node-network Service Account: ansible-runner Containers: ansible-runner: Image: gcr.io/anthos-baremetal-release/ansible-runner:1.16.1-gke.5 Port: <none> Host Port: <none> Command: cluster Args: -execute-command=network-health-check -login-user=root -controlPlaneLBPort=443 Environment: <none> Mounts: /data/configs from inventory-config-volume (ro) /etc/ssh-key from ssh-key-volume (ro) Volumes: inventory-config-volume: Type: ConfigMap (a volume populated by a ConfigMap) Name: bm-system-network-inventory-bm-system-ne724a7cc3584de0635099 Optional: false ssh-key-volume: Type: Secret (a volume populated by a Secret) SecretName: ssh-key Optional: false Last Schedule Time: Tue, 14 Nov 2023 18:41:00 +0000 Active Jobs: <none> Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal SuccessfulCreate 48m cronjob-controller Created job bm-system-network-28333121 Normal SawCompletedJob 47m cronjob-controller Saw completed job: bm-system-network-28333121, status: Complete Normal SuccessfulDelete 47m cronjob-controller Deleted job bm-system-network-28333061
Registros de comprobación del estado
Cuando se ejecutan las comprobaciones del estado, se generan registros. Tanto si ejecutas comprobaciones del estado congkectl diagnose cluster
como si se ejecutan automáticamente como parte de comprobaciones periódicas del estado, los registros se envían a Cloud Logging. Cuando ejecutas comprobaciones del estado bajo demanda, se crean archivos de registro en /home/ubuntu/.config/gke-on-prem/logs/gkectl-$(date).log
.
Ver registros de forma local
Puedes usar kubectl
para ver los registros de las comprobaciones del estado periódicas:
Obtén pods y busca el pod de comprobación de estado que te interese:
kubectl get pods \ --kubeconfig ADMIN_KUBECONFIG \ --namespace CLUSTER_NAMESPACE
Haz los cambios siguientes:
ADMIN_KUBECONFIG
: la ruta del archivo kubeconfig del clúster de administrador.CLUSTER_NAMESPACE
: el espacio de nombres del clúster.
En la siguiente respuesta de ejemplo se muestran algunos pods de comprobación de estado:
NAME READY STATUS RESTARTS AGE bm-system-10.200.0.4-machine-28353626-lzx46 0/1 Completed 0 12m bm-system-10.200.0.5-machine-28353611-8vjw2 0/1 Completed 0 27m bm-system-add-ons-28353614-gxt8f 0/1 Completed 0 24m bm-system-check-kernel-gce-user001-02fd2ac273bc18f008192e177x2c 0/1 Completed 0 75m bm-system-cplb-init-10.200.0.4-822aa080-7a2cdd71a351c780bf8chxk 0/1 Completed 0 74m bm-system-cplb-update-10.200.0.4-822aa082147dbd5220b0326905lbtj 0/1 Completed 0 67m bm-system-gcp-check-create-cluster-202311025828f3c13d12f65k2xfj 0/1 Completed 0 77m bm-system-kubernetes-28353604-4tc54 0/1 Completed 0 34m bm-system-kubernetes-check-bm-system-kub140f257ddccb73e32c2mjzn 0/1 Completed 0 63m bm-system-machine-gcp-check-10.200.0.4-6629a970165889accb45mq9z 0/1 Completed 0 77m ... bm-system-network-28353597-cbwk7 0/1 Completed 0 41m bm-system-network-health-check-gce-user05e0d78097af3003dc8xzlbd 0/1 Completed 0 76m bm-system-network-preflight-check-create275a0fdda700cb2b44b264c 0/1 Completed 0 77m
Obtén los registros de pods:
kubectl logs POD_NAME \ --kubeconfig ADMIN_KUBECONFIG \ --namespace CLUSTER_NAMESPACE
Haz los cambios siguientes:
POD_NAME
: el nombre del pod de comprobación del estado.ADMIN_KUBECONFIG
: la ruta del archivo kubeconfig del clúster de administrador.CLUSTER_NAMESPACE
: el espacio de nombres del clúster.
En el siguiente ejemplo se muestra parte del registro de un pod correspondiente a una comprobación del estado de una máquina de nodo correcta:
... TASK [Summarize health check] ************************************************** Wednesday 29 November 2023 00:26:22 +0000 (0:00:00.419) 0:00:19.780 **** ok: [10.200.0.4] => { "results": { "check_cgroup_pass": "passed", "check_cni_pass": "passed", "check_containerd_pass": "passed", "check_cpu_pass": "passed", "check_default_route": "passed", "check_disks_pass": "passed", "check_dns_pass": "passed", "check_docker_pass": "passed", "check_gcr_pass": "passed", "check_googleapis_pass": "passed", "check_kernel_version_pass": "passed", "check_kubelet_pass": "passed", "check_memory_pass": "passed", "check_pod_cidr_intersect_pass": "passed", "check_registry_mirror_reachability_pass": "passed", "check_time_sync_pass": "passed", "check_ubuntu_1804_kernel_version": "passed", "check_ufw_pass": "passed", "check_vcpu_pass": "passed" } } ...
En el siguiente ejemplo se muestra parte del registro de un pod de comprobación del estado de un nodo que ha fallado. En el ejemplo se muestra que la comprobación
kubelet
(check_kubelet_pass
) ha fallado, lo que indica quekubelet
no se está ejecutando en este nodo.... TASK [Reach a final verdict] *************************************************** Thursday 02 November 2023 17:30:19 +0000 (0:00:00.172) 0:00:17.218 ***** fatal: [10.200.0.17]: FAILED! => {"changed": false, "msg": "following checks failed, ['check_kubelet_pass']"} ...
Ver los registros en Cloud Logging
Los registros de comprobación del estado se envían a Cloud Logging y se pueden ver en el Explorador de registros. Las comprobaciones de estado periódicas se clasifican como pods en los registros de la consola.
En la Google Cloud consola, ve a la página Explorador de registros del menú Logging.
En el campo Consulta, introduce la siguiente consulta básica:
resource.type="k8s_container" resource.labels.pod_name=~"bm-system.*-machine.*"
En la ventana Resultados de la consulta se muestran los registros de las comprobaciones del estado de la máquina de nodos.
Aquí tienes una lista de consultas para comprobaciones periódicas del estado:
Predeterminado
resource.type="k8s_container" resource.labels.pod_name=~"bm-system.default-*"
Máquina de nodos
resource.type="k8s_container" resource.labels.pod_name=~"bm-system.*-machine.*"
Red
resource.type="k8s_container" resource.labels.pod_name=~"bm-system-network.*"
Kubernetes
resource.type="k8s_container" resource.labels.pod_name=~"bm-system-kubernetes.*"
Complementos
resource.type="k8s_container" resource.labels.pod_name=~"bm-system-add-ons.*"
Comprobaciones periódicas del estado
De forma predeterminada, las comprobaciones de estado periódicas se ejecutan cada hora y comprueban los siguientes componentes del clúster:
Para comprobar el estado del clúster, consulta los recursos personalizados de Bare Metal HealthCheck
(healthchecks.baremetal.cluster.gke.io
) en el clúster de administrador.
Las comprobaciones de red, Kubernetes y complementos son comprobaciones a nivel de clúster, por lo que hay un solo recurso para cada comprobación. Se ejecuta una comprobación de la máquina en cada nodo del clúster de destino, por lo que hay un recurso para cada nodo.
Para enumerar los recursos de
HealthCheck
de un clúster determinado, ejecuta el siguiente comando:kubectl get healthchecks.baremetal.cluster.gke.io \ --kubeconfig=ADMIN_KUBECONFIG \ --namespace=CLUSTER_NAMESPACE
Haz los cambios siguientes:
ADMIN_KUBECONFIG
: la ruta del archivo kubeconfig del clúster de administrador.CLUSTER_NAMESPACE
: el espacio de nombres del clúster de destino de la comprobación de estado.
En la siguiente respuesta de ejemplo se muestra el formato:
NAMESPACE NAME PASS AGE cluster-test-user001 bm-system-192.0.2.53-machine true 56d cluster-test-user001 bm-system-192.0.2.54-machine true 56d cluster-test-user001 bm-system-add-ons true 56d cluster-test-user001 bm-system-kubernetes true 56d cluster-test-user001 bm-system-network true 56d
El campo
Pass
dehealthchecks.baremetal.cluster.gke.io
indica si la última comprobación del estado se ha realizado correctamente (true
) o no (false
).
Para obtener más información sobre cómo comprobar el estado de las comprobaciones de estado periódicas, consulta los HealthCheck
recursos personalizados y los registros de comprobación del estado.
Comprobaciones del estado bajo demanda
Para ejecutar comprobaciones del estado bajo demanda, usa el comando gkectl diagnose cluster
. Cuando usas gkectl diagnose cluster
para ejecutar comprobaciones del estado, se aplican las siguientes reglas:
Cuando compruebas un clúster de usuario con un comando
gkectl diagnose cluster
, especifica la ruta del archivo kubeconfig del clúster de administrador con la marca--kubeconfig
.Los registros se generan en un directorio con marca de tiempo en la carpeta de registros del clúster de tu estación de trabajo de administrador (de forma predeterminada,
/home/ubuntu/.config/gke-on-prem/logs/gkectl-$(date).log
).Los registros de comprobación del estado también se envían a Cloud Logging. Para obtener más información sobre los registros, consulta Registros de comprobación del estado.
Detección de deriva de configuración
Cuando se ejecuta la comprobación del estado de los complementos, se comprueban, entre otras cosas, los cambios inesperados en los recursos gestionados por Google Distributed Cloud. En concreto, la comprobación evalúa los manifiestos de estos recursos para determinar si entidades externas han realizado cambios. Estas comprobaciones pueden ayudar a predecir cambios inadvertidos que podrían ser perjudiciales para el estado del clúster. También proporcionan información valiosa para solucionar problemas.
Qué manifiestos se comprueban
Con algunas excepciones, la comprobación del estado de los complementos revisa todos los recursos gestionados por Google Distributed Cloud de tus clústeres. Se trata de recursos que instala y administra el software de Google Distributed Cloud. Hay cientos de estos recursos y la mayoría de sus manifiestos se comprueban para detectar desviaciones de configuración. Los manifiestos son para todo tipo de recursos, incluidos, entre otros, los siguientes:
|
|
|
Qué archivos de manifiesto no se comprueban
Por diseño, excluimos algunos manifiestos de la revisión. Por motivos de privacidad y seguridad, ignoramos determinados tipos de recursos, como certificados, secretos y cuentas de servicio. La comprobación de complementos también ignora algunos recursos y campos de recursos, ya que esperamos que se modifiquen y no queremos que los cambios provoquen errores de desviación de configuración. Por ejemplo, la comprobación ignora los campos replicas
de las implementaciones, ya que el escalador automático puede modificar este valor.
Cómo excluir manifiestos o partes de manifiestos adicionales de la revisión
En general, te recomendamos que no hagas cambios en los recursos gestionados por Google Distributed Cloud ni ignores los cambios que se hagan en ellos.
Sin embargo, sabemos que, en ocasiones, los recursos requieren modificaciones para abordar requisitos específicos o solucionar problemas. Por este motivo, proporcionamos un ignore-config-drift
ConfigMap para cada clúster de tu flota. Estos ConfigMaps se usan para especificar los recursos y los campos de recursos concretos que se deben excluir de la evaluación.
Google Distributed Cloud crea un ignore-config-drift
ConfigMap para cada clúster. Estos ConfigMaps se encuentran en el clúster de gestión (administrador o híbrido) en el espacio de nombres del clúster correspondiente. Por ejemplo, si tienes un clúster de administrador (admin-one
) que gestiona dos clústeres de usuario (user-one
y user-two
), puedes encontrar el objeto ConfigMap ignore-config-drift
del clúster user-one
en el clúster admin-one
, en el espacio de nombres cluster-user-one
.
Para excluir un recurso o campos de recursos de la revisión, sigue estos pasos:
Añade un campo
data.ignore-resources
al ConfigMapignore-config-drift
.Este campo acepta una matriz de cadenas JSON, en la que cada cadena especifica un recurso y, opcionalmente, campos específicos del recurso.
Especifique el recurso y, opcionalmente, los campos concretos que quiera ignorar como objeto JSON en la matriz de cadenas:
El objeto JSON de un recurso y sus campos tiene la siguiente estructura:
{ "Version": "RESOURCE_VERSION", "Kind": "RESOURCE_KIND", "Namespace": "RESOURCE_NAMESPACE", "Name": "RESOURCE_NAME", "Fields": [ "FIELD_1_NAME", "FIELD_2_NAME", ... "FIELD_N_NAME" ] }
Haz los cambios siguientes:
RESOURCE_VERSION
: (opcional) el valorapiVersion
del recurso.RESOURCE_KIND
: (opcional) el valorkind
del recurso.RESOURCE_NAMESPACE
: (opcional) el valormetadata.namespace
del recurso.RESOURCE_NAME
: (opcional) el valormetadata.name
del recurso.FIELD_NAME
: (opcional) especifica una matriz de campos de recursos que se deben ignorar. Si no especifica ningún campo, la comprobación de complementos ignora todos los cambios realizados en el recurso.
Todos los campos del objeto JSON son opcionales, por lo que se permiten varias permutaciones. Puedes excluir categorías completas de recursos o ser muy preciso y excluir campos específicos de un recurso concreto.
Por ejemplo, si quieres que la comprobación de complementos ignore los cambios realizados solo en la sección
command
ais
de la implementación de tu clúster de administrador, el JSON podría tener el siguiente aspecto:{ "Version": "apps/v1", "Kind": "Deployment", "Namespace": "anthos-identity-service", "Name": "ais", "Fields": [ "command" ] }
Añadirías este objeto JSON a
ignore-resources
en elconfig-drift-ignore
ConfigMap como un valor de cadena en una matriz, tal como se muestra en el siguiente ejemplo:apiVersion: v1 kind: ConfigMap metadata: creationTimestamp: "2024-09-24T00:39:45Z" name: config-drift-ignore namespace: cluster-example-admin ownerReferences: - apiVersion: baremetal.cluster.gke.io/v1 kind: Cluster name: example-admin ... data: ignore-resources: '[{"Version":"apps/v1","Kind":"Deployment","Namespace":"anthos-identity-service","Name":"ais","Fields":["command"]}]' ...
Este ajuste de ConfigMap te permite añadir, quitar o editar campos
command
en la implementaciónais
sin que se produzcan errores de deriva de configuración. Sin embargo, los cambios en los campos que no estén en la seccióncommand
de la implementación seguirán detectándose en la comprobación de complementos y se informarán como desviación de la configuración.Si quiere excluir todos los despliegues, el valor
ignore-resources
podría ser el siguiente:... data: ignore-resources: '[{"Kind":"Deployment"}]' ...
Como
ignore-resources
acepta una matriz de cadenas JSON, puedes especificar varios patrones de exclusión. Si estás solucionando problemas o experimentando con tus clústeres y no quieres que se produzcan errores de desviación de configuración, esta flexibilidad para excluir tanto recursos muy específicos como campos de recursos o categorías más amplias de recursos de la detección de desviaciones puede ser útil.
Siguientes pasos
Para obtener más información, consulta las siguientes secciones:
Crear capturas de diagnóstico cuando se habilita el clúster avanzado
Entender el impacto de los fallos en Google Distributed Cloud
Si necesitas más ayuda, ponte en contacto con el servicio de atención al cliente de Cloud.
También puedes consultar la sección Obtener asistencia para obtener más información sobre los recursos de asistencia, incluidos los siguientes:
- Requisitos para abrir un caso de asistencia.
- Herramientas para ayudarte a solucionar problemas, como registros y métricas.
- Componentes, versiones y funciones compatibles de Google Distributed Cloud para VMware (solo software).