Las verificaciones de solicitud preliminar te permiten identificar problemas antes de realizar operaciones importantes del clúster, como crear o actualizar clústeres. Cuando las verificaciones se ejecutan automáticamente antes de una operación, Google Distributed Cloud bloquea las modificaciones del clúster hasta que se aprueben todas las validaciones. También puedes ejecutar verificaciones según demanda o evitarlas durante los flujos de trabajo de administración de clústeres.
Google Distributed Cloud ejecuta estas validaciones cuando creas o actualizas
clústeres y grupos de nodos con bmctl. También ejecuta verificaciones internas cuando un clúster de administrador
o híbrido actualiza recursos en clústeres de usuario. Si alguna verificación falla, no
se aplican cambios a tus clústeres.
Recursos personalizados PreflightCheck
Cuando se ejecuta una verificación de solicitud preliminar, Google Distributed Cloud crea un recurso personalizado PreflightCheck. Los recursos personalizados de PreflightCheck son persistentes y proporcionan un registro de las actividades y los resultados de la verificación de solicitud preliminar al vuelo.
Para recuperar los recursos personalizados de PreflightCheck, haz lo siguiente:
Obtén una lista de las verificaciones de solicitud preliminar que se ejecutaron para un clúster determinado:
kubectl get preflightchecks --kubeconfig ADMIN_KUBECONFIG --namespace CLUSTER_NAMESPACEReemplaza lo siguiente:
ADMIN_KUBECONFIG: la ruta del archivo kubeconfig del clúster de administradorCLUSTER_NAMESPACE: el espacio de nombres del clúster.
En la respuesta, se enumeran los recursos por espacio de nombres. Puedes ejecutar
kubectl get preflightchecksen todos los espacios de nombres para obtener una lista completa. Para cada recurso, la respuesta muestra la antigüedad del recurso y si se aprobaron o no las verificaciones de solicitud preliminar al vuelo. En la siguiente respuesta de ejemplo, se muestran los recursos dePreflightCheckpara el espacio de nombrescluster-test-admin001.NAMESPACE NAME PASS AGE cluster-test-admin001 test-admin001 true 52d cluster-test-admin001 test-admin001jkm4q true 52d cluster-test-admin001 test-admin001k79t7 true 6d20h cluster-test-admin001 upgrade-cluster-20231106-222746 true 6d20hRecupera los detalles de un recurso personalizado
PreflightCheckespecífico:kubectl describe preflightchecks --kubeconfig ADMIN_KUBECONFIG --namespace CLUSTER_NAMESPACEReemplaza lo siguiente:
ADMIN_KUBECONFIG: la ruta del archivo kubeconfig del clúster de administradorCLUSTER_NAMESPACE: el espacio de nombres del clúster.
En la siguiente respuesta de comando de muestra, se muestra un recurso
PreflightCheckpara una verificación de solicitud preliminar al vuelo correcta que se ejecutó como parte de la creación del clúster:Name: create-cluster-20230922-175006 Namespace: cluster-test-user001 Labels: <none> Annotations: <none> API Version: baremetal.cluster.gke.io/v1 Kind: PreflightCheck Metadata: Creation Timestamp: 2023-09-22T17:50:11Z Generation: 1 Resource Version: 6502800 UID: 917daf64-963d-44b4-a1f9-c54972a39191 Spec: Check Image Version: latest Config YAML: --- apiVersion: v1 kind: Namespace metadata: name: cluster-test-user --- apiVersion: baremetal.cluster.gke.io/v1 kind: Cluster metadata: name: test-user001 namespace: cluster-test-user001 spec: type: user profile: default anthosBareMetalVersion: 1.16.0 gkeConnect: projectID: clusters-project controlPlane: nodePoolSpec: nodes: - address: 192.0.2.53 ... --- apiVersion: baremetal.cluster.gke.io/v1 kind: NodePool metadata: name: node-pool-1 namespace: cluster-test-user001 spec: clusterName: test-user001 nodes: - address: 192.0.2.54 ... Status: Checks: 192.0.2.53: Job UID: d0b5dc1f-9d39-4cc8-b3d2-0841212f7f8c Message: Pass: true 192.0.2.53-gcp: Job UID: b4d96ce5-0d4e-4e3c-97db-6317e0c15fc8 Message: Pass: true 192.0.2.54: Job UID: b67cf195-3951-46ad-b91c-0d79025cfc0a Message: Pass: true 192.0.2.54-gcp: Job UID: aed509e2-4bf7-44c4-bfa0-8147ef8ea74e Message: Pass: true Gcp: Job UID: ac479ac4-e1c4-4681-9f2b-5773069bf6ae Message: Pass: true Node - Network: Job UID: 8a57c4ee-ad17-4560-8809-b117c871ad5d Message: Pass: true Pod - Cidr: 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 ... Completion Time: 2023-09-22T17:51:22Z Conditions: Last Transition Time: 2023-10-02T23:59:06Z Observed Generation: 1 Reason: Reconciling Status: True Type: Reconciling Node Pool Specs: node-pool-1: Cluster Name: test-user001 Nodes: Address: 192.0.2.54 ... Pass: true Start Time: 2023-09-22T17:50:32Z Events: <none>En el recurso personalizado
PreflightCheckanterior, la secciónStatuscontiene la siguiente información:- En la sección
Checks, se enumeran las comprobaciones de solicitud preliminar individuales que se ejecutaron y si se aprobaron o no. En este ejemplo, se ejecutaron las siguientes verificaciones:192.0.2.53y192.0.2.54: Son verificaciones de nodos (configuración del SO, recursos y parámetros de configuración de software) para máquinas con direcciones IP192.0.2.53y192.0.2.54.192.0.2.53-gpcy192.0.2.54-gcp: Google Cloud Verificaciones de conectividad (acceso a Artifact Registry y a la API de Google) para máquinas con direcciones IP192.0.2.53y192.0.2.54.Gcp: Google Cloud verificaciones de conectividad para el clúster.Node - Network: Son las verificaciones de red (conectividad, operaciónetcd, acceso a VIP y vinculación de puertos) para el clúster.Pod - Cidr: Verifica si hay direcciones IP de Pods superpuestas en el clúster.
- En la sección
Cluster Spec, se muestra la configuración del clúster. - El campo
Passmuestratrue, lo que indica que las verificaciones de solicitud preliminar a la conexión se aprobaron de forma colectiva.
Registros de las comprobaciones de solicitud preliminar
Cuando se ejecutan las verificaciones de solicitud preliminar como resultado de un comando bmctl, como bmctl check
preflight, Google Distributed Cloud crea archivos de registro. Esto es lo que se genera y dónde:
Los registros de comprobaciones de solicitud preliminar se generan en un directorio con el siguiente patrón de nombre
preflight-TIMESTAMP.Este directorio de verificación de solicitud preliminar se crea en el directorio
logdel clúster en el espacio de trabajobmctl. De forma predeterminada, la ruta de acceso del directoriologesbmctl-workspace/CLUSTER_NAME/log.Los registros de verificación de solicitud preliminar consisten en los siguientes archivos:
Archivos de registro para las verificaciones de máquinas de nodos, uno para cada nodo del clúster. Estos archivos de registro se nombran con la dirección IP del nodo. Por ejemplo, un nombre de archivo podría ser
192.0.2.53.Archivos de registro para las verificaciones de acceso de Google Cloud , uno para cada nodo del clúster. Estos archivos de registro se nombran con la dirección IP del nodo. Por ejemplo, un nombre de archivo podría ser
192.0.2.53-gcp.Es el archivo de registro de las verificaciones de acceso al clúster Google Cloud , que se llama
gcp.Es el archivo de registro para las verificaciones de redes de nodos, que se llama
node-network.
Si una verificación de solicitud preliminar falla, estos archivos de registro pueden ayudarte a identificar y solucionar el problema.
Comprobaciones de solicitud preliminar para la creación de clústeres
Cuando creas clústeres, Google Distributed Cloud ejecuta automáticamente verificaciones de solicitud preliminar antes de que se realicen cambios.
¿Qué se verifica?
Las verificaciones de solicitud preliminar a la instalación verifican lo siguiente:
Verificaciones de la máquina de nodo:
Las máquinas del clúster usan un sistema operativo (SO) compatible.
La versión del SO es compatible.
El SO usa una versión de kernel compatible.
Las máquinas de nodo están configuradas para usar
cgroupsv2. La verificación falla si se detecta
cgroupsv1.En Ubuntu, el Uncomplicated Firewall (UFW) está inhabilitado.
Para Ubuntu, el administrador de paquetes
aptes operable y los paquetes necesarios están disponibles.Para Red Hat Enterprise Linux, el administrador de paquetes
dnfestá operativo y los paquetes requeridos están disponibles.En Red Hat Enterprise Linux, Podman no está instalado.
Las máquinas de nodo cumplen con los requisitos mínimos de CPU.
Las máquinas de nodo cumplen con los requisitos mínimos de memoria.
Las máquinas de nodo cumplen con los requisitos mínimos de almacenamiento en disco.
La sincronización de hora se configura en las máquinas de nodo.
kubeletestá activo y se ejecuta en las máquinas de nodo.containerdestá activo y se ejecuta en las máquinas de nodo.La ruta predeterminada para enrutar paquetes a la puerta de enlace predeterminada está presente en los nodos.
El sistema de nombres de dominio (DNS) funciona correctamente. Si el clúster está configurado para ejecutarse detrás de un proxy, se omite esta verificación.
Los CIDRs de los Pods no se superponen con las direcciones IP de las máquinas de los nodos.
Si el clúster está configurado para usar una duplicación de registro, se puede acceder a ella.
Google Cloud para cada nodo y para el clúster:
Artifact Registry,
gcr.io, se verifica la accesibilidad. Si el clúster está configurado para usar una duplicación de registro, se omite esta verificación.Se puede acceder a las APIs de Google.
Verificaciones de redes de nodos (varían según la configuración del balanceo de cargas):
Se puede acceder a la VIP del servidor de la API de Kubernetes.
Se puede acceder a las VIP del balanceador de cargas.
Los nodos pueden comunicarse en los puertos requeridos.
La instancia de eventos de
etcdse aprovisiona y se cumplen los requisitos de puerto.
Cuando se aprueban todas las verificaciones, Google Distributed Cloud crea el clúster. Para obtener más información sobre los requisitos para crear clústeres, consulta Descripción general de los requisitos previos de la instalación.
Ejecuta verificaciones de solicitud preliminar a pedido para la creación de clústeres
También puedes ejecutar verificaciones de solicitud preliminar con antes de crear un clúster. Hacerlo puede ser beneficioso, ya que las operaciones principales del clúster, como la creación, llevan mucho tiempo. Identificar y resolver los problemas por separado antes de iniciar una operación importante del clúster puede ayudarte con la programación.
Clústeres autoadministrados
Con el siguiente comando, se valida el archivo de configuración de clústeres especificado, pero no se intenta crear el clúster:
bmctl check config --cluster CLUSTER_NAMEReemplaza
CLUSTER_NAMEpor el nombre del clúster que está asociado con el archivo de configuración que estás verificando.Este comando comprueba si las máquinas y la red están listas para la creación del clúster:
bmctl check preflight --cluster CLUSTER_NAMEReemplaza
CLUSTER_NAMEpor el nombre del clúster que estás verificando.
Clústeres de usuarios
Con el siguiente comando, se valida el archivo de configuración de clústeres especificado, pero no se intenta crear el clúster:
bmctl check config --cluster CLUSTER_NAME --admin-kubeconfig ADMIN_KUBECONFIGReemplaza lo siguiente:
CLUSTER_NAME: Es el nombre del clúster de usuario que estás verificando.ADMIN_KUBECONFIG: la ruta del archivo kubeconfig del clúster de administrador
Con el siguiente comando, se comprueba si las máquinas y la red están listas para la creación del clúster:
bmctl check preflight --cluster CLUSTER_NAME --admin-kubeconfig ADMIN_KUBECONFIG
bmctl admite el uso de --kubeconfig como un alias para la marca --admin-kubeconfig.
Comprobaciones de solicitud preliminar para la actualización de clústeres
Cuando actualizas clústeres, Google Distributed Cloud ejecuta automáticamente verificaciones de solicitud preliminar antes de que se realicen cambios.
¿Qué se verifica?
Las verificaciones de solicitud preliminar para las actualizaciones de clústeres verifican lo siguiente:
Verificaciones de la máquina de nodo:
Las máquinas del clúster usan un sistema operativo (SO) compatible.
La versión del SO es compatible.
El SO usa una versión de kernel compatible.
Las máquinas de los nodos están configuradas para usar
cgroupsv2. La verificación falla si se detectacgroupsv1.En Ubuntu, el Uncomplicated Firewall (UFW) está inhabilitado.
Las máquinas de nodo cumplen con los requisitos mínimos de CPU.
Las máquinas de nodo tienen más del 20% de los recursos de CPU disponibles.
Las máquinas de nodo cumplen con los requisitos mínimos de memoria.
Las máquinas de nodo cumplen con los requisitos mínimos de almacenamiento en disco.
La sincronización de hora se configura en las máquinas de nodo.
La ruta predeterminada para enrutar paquetes a la puerta de enlace predeterminada está presente en los nodos.
El sistema de nombres de dominio (DNS) funciona correctamente. Si el clúster está configurado para ejecutarse detrás de un proxy, se omite esta verificación.
Si el clúster está configurado para usar una duplicación de registro, se puede acceder a ella.
- No hay nodos del plano de control ni del balanceador de cargas en modo de mantenimiento.
Google Cloud para cada nodo y para el clúster:
Artifact Registry,
gcr.io, se verifica la accesibilidad. Si el clúster está configurado para usar una duplicación de registro, se omite esta verificación.Se puede acceder a las APIs de Google.
Verificaciones de máquinas:
kubeletestá activo y se ejecuta en las máquinas de nodo.containerdestá activo y se ejecuta en las máquinas de nodo.El estado del extremo de estado de la interfaz de red de contenedor (CNI) es correcto.
Los CIDRs de los Pods no se superponen con las direcciones IP de las máquinas de los nodos.
- Los certificados de
kubeadmno vencieron.
Verificaciones de redes de nodos (varían según la configuración del balanceo de cargas):
Se puede acceder a la VIP del servidor de la API de Kubernetes.
Se puede acceder a las VIP del balanceador de cargas.
Los nodos pueden comunicarse en los puertos requeridos.
La instancia de eventos de
etcdse aprovisiona y se cumplen los requisitos de puerto.
Cuando se aprueban todas las verificaciones, Google Distributed Cloud actualiza el clúster. Para obtener más información sobre la actualización de clústeres, consulta Prácticas recomendadas para las actualizaciones de clústeres de Google Distributed Cloud y Ciclo de vida y etapas de las actualizaciones de clústeres.
Ejecuta verificaciones de solicitud preliminar a pedido para las actualizaciones de clústeres
El comando bmctl check preflight te permite ejecutar una verificación de solicitud preliminar antes de actualizar tu clúster. Para verificar si los clústeres están listos para una actualización, ejecuta el siguiente comando de verificación de solicitud preliminar antes de comenzar la actualización:
Actualiza la versión del clúster (
anthosBareMetalVersion) en el archivo de configuración del clúster.Usa el siguiente comando para verificar si los clústeres están listos para una actualización y ejecutar una verificación de solicitud preliminar:
bmctl check preflight --cluster CLUSTER_NAME --kubeconfig ADMIN_KUBECONFIGReemplaza lo siguiente:
CLUSTER_NAME: el nombre del clúster que se actualizaráADMIN_KUBECONFIGes la ruta al archivo kubeconfig del clúster de administrador.
Cuando creas la comprobación de solicitud preliminar con este comando para probar una actualización de clúster, se crea un recurso personalizado de
PreflightChecken el clúster de administrador.
Comprobación de solicitud preliminar interna en clústeres existentes
Google Distributed Cloud realiza verificaciones de solicitud preliminar internas automáticamente cuando aplicas recursos de Kubernetes a un clúster existente. Si alguna verificación falla, Google Distributed Cloud no cambia ninguno de los nodos relacionados, a menos que omitas las verificaciones de forma explícita.
Omite las verificaciones de solicitud preliminar cuando apliques recursos de Kubernetes
Para ignorar las verificaciones de solicitud preliminar internas cuando aplicas recursos a los clústeres existentes, debes establecer el campo BypassPreflightCheck en true en el archivo de configuración del clúster.
Esta es una parte de un archivo de configuración del clúster que muestra el
campo bypassPreflightCheck establecido en true:
apiVersion: v1
kind: Namespace
metadata:
name: cluster-user1
---
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: user1
namespace: cluster-user1
spec:
type: user
bypassPreflightCheck: true
# Anthos cluster version.
anthosBareMetalVersion: 1.36.200-gke.118
...
Ejecuta las verificaciones de solicitud preliminar más recientes
Las verificaciones de solicitud preliminar (y las verificaciones de estado) se actualizan a medida que se identifican los problemas conocidos.
Para dirigir bmctl para que ejecute las verificaciones desde la imagen de parche más reciente de tu
versión secundaria instalada, usa la marca de opción --check-image-version latest:
bmctl check preflight --cluster CLUSTER_NAME --check-image-version latest
Reemplaza CLUSTER_NAME por el nombre del clúster que
estás verificando.
Esto puede ayudarte a detectar cualquier problema conocido identificado recientemente sin crear o actualizar primero tu clúster.
También puedes realizar las verificaciones de estado más recientes de un clúster activo para determinar si funciona correctamente. Para obtener más información, consulta Ejecuta las verificaciones de estado más recientes.
Ignora los resultados de las comprobaciones previas
Si ejecutas verificaciones previas a pedido antes de crear o actualizar clústeres, puedes omitir las verificaciones de solicitud preliminar automatizadas. Para omitir las verificaciones de solicitud preliminar automatizadas, usa la marca opcional --force cuando ejecutes bmctl create cluster o bmctl upgrade cluster.