Las comprobaciones preliminares son una medida preventiva para ayudar a identificar problemas antes de iniciar una operación principal de clúster, como crear o actualizar clústeres. Cuando estas verificaciones se ejecutan de forma automática antes de una operación, no se realizan cambios en los clústeres, a menos que todas las comprobaciones preliminares sean exitosas. También puedes ejecutar verificaciones previas a pedido.
En este documento, se describe cada verificación, en qué circunstancias se ejecuta de forma automática, cómo y cuándo ejecutarla de forma manual, y cómo interpretar los resultados.
En GDCV para Bare Metal, puedes ejecutar comprobaciones preliminares para diferentes situaciones:
GDCV para Bare Metal ejecuta las comprobaciones preliminares cuando creas o actualizas clústeres y recursos de grupos de nodos con
bmctl
. Si fallan las verificaciones, no se realizan cambios. También puedes omitir estas verificaciones o ejecutarlas de manera explícita.GDCV para Bare Metal también ejecuta comprobaciones preliminares internas cuando un clúster híbrido o de administrador crea o actualiza recursos de Kubernetes en los clústeres de usuario. Las verificaciones se ejecutan antes de que los cambios se apliquen en los clústeres de usuarios afectados. Si las verificaciones fallan, no se realizan cambios.
PreflightCheck
recursos personalizados
Cuando se ejecuta una verificación previa, GDCV para Bare Metal crea un recurso personalizado PreflightCheck
. Los recursos personalizados PreflightCheck
son persistentes y proporcionan un registro de las actividades y resultados de las comprobaciones preliminares.
Para recuperar PreflightCheck
recursos personalizados, haz lo siguiente:
Obtén una lista de las comprobaciones preliminares que se ejecutaron para un clúster determinado:
kubectl get preflightchecks --kubeconfig ADMIN_KUBECONFIG --namespace CLUSTER_NAMESPACE
Reemplaza lo siguiente:
ADMIN_KUBECONFIG
: la ruta del archivo kubeconfig del clúster de administradorCLUSTER_NAMESPACE
: el espacio de nombres del clúster.
La respuesta enumera los recursos por espacio de nombres. Puedes ejecutar
kubectl get preflightchecks
en todos los espacios de nombres para obtener una lista completa. Para cada recurso, la respuesta muestra la antigüedad del recurso y si las comprobaciones preliminares se aprobaron. En la siguiente respuesta de muestra, se muestran los recursosPreflightCheck
para 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 6d20h
Recupera los detalles de un recurso personalizado
PreflightCheck
específico:kubectl describe preflightchecks --kubeconfig ADMIN_KUBECONFIG --namespace CLUSTER_NAMESPACE
Reemplaza 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 del comando de muestra, se muestra un recurso
PreflightCheck
para una verificación preliminar exitosa 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
PreflightCheck
anterior, la secciónStatus
contiene la siguiente información:- En la sección
Checks
, se enumeran las comprobaciones preliminares individuales que se ejecutaron y si se aprobaron o no. En este ejemplo, se ejecutan las siguientes verificaciones:192.0.2.53
y192.0.2.54
: comprobaciones de nodos (configuración del SO, recursos y configuración de software) de las máquinas con direcciones IP192.0.2.53
y192.0.2.54
192.0.2.53-gpc
y192.0.2.54-gcp
: Verificaciones de conectividad de Google Cloud (Container Registry y acceso a la API de Google) para máquinas con direcciones IP192.0.2.53
y192.0.2.54
Gcp
: Verificaciones de conectividad de Google Cloud para el clúster.Node - Network
: verificaciones de red (conectividad, operaciónetcd
, acceso VIP y vinculación de puertos) del clústerPod - Cidr
: La dirección IP del Pod verifica si hay direcciones superpuestas en el clúster.
- En la sección
Cluster Spec
, se muestra la configuración del clúster. - El campo
Pass
muestratrue
, lo que indica que las comprobaciones preliminares se pasaron de forma colectiva.
Registros de comprobaciones preliminares
Cuando se ejecutan las comprobaciones preliminares como resultado de un comando bmctl
, como bmctl check
preflight
, GDCV para Bare Metal crea archivos de registro. Esto es lo que se genera y dónde:
Los registros de comprobaciones preliminares se generan en un directorio con el siguiente patrón de nomenclatura
preflight-TIMESTAMP
.Este directorio de solicitud preliminar se crea en el directorio
log
para el clúster en el lugar de trabajobmctl
. De forma predeterminada, la ruta del directoriolog
esbmctl-workspace/CLUSTER_NAME/log
.Los registros de las comprobaciones preliminares constan de los siguientes archivos:
Archivos de registro para las verificaciones de la máquina del nodo, 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 puede ser
192.0.2.53-gcp
.El archivo de registro de las verificaciones de acceso de Google Cloud del clúster, que se llama
gcp
.Archivo de registro para las verificaciones de redes de nodos, que se llama
node-network
.
Si falla una verificación preliminar, estos archivos de registro pueden ayudarte a identificar y solucionar el problema.
Verificaciones previas para la creación de clústeres
Cuando creas clústeres, GDCV para Bare Metal ejecuta de forma automática las comprobaciones preliminares antes de que se realice cualquier cambio.
¿Qué se revisa?
Las comprobaciones preliminares para la instalación comprueban lo siguiente:
Verificaciones de la máquina del nodo:
Las máquinas de clústeres usan un sistema operativo (SO) compatible.
La versión del SO es compatible.
El SO usa una versión de kernel compatible.
En Ubuntu, el firewall uncomplicated (UFW) está inhabilitado.
En Ubuntu, el administrador de paquetes
apt
es operable y los paquetes necesarios están disponibles.En Red Hat Enterprise Linux, el administrador de paquetes
dnf
está disponible.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 tiempo se configura en las máquinas de los nodos.
kubelet
está activo y se ejecuta en máquinas de nodos.containerd
está activo y se ejecuta en máquinas de nodos.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 CIDR del Pod no se superponen con las direcciones IP de las máquinas de nodo.
Si el clúster está configurado para usar una duplicación de registro, se podrá acceder a ella.
En Google Cloud, verifica cada nodo y el clúster:
Se verificó la accesibilidad de Container Registry,
gcr.io
. 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 del nodo (varía según la configuración del balanceo de cargas):
Se puede acceder a la VIP para el servidor de la API de Kubernetes.
Se puede acceder a las VIP del balanceador de cargas.
Los nodos pueden comunicarse en los puertos requeridos.
Se aprovisionó la instancia de eventos
etcd
y se cumplen los requisitos de puerto.
Cuando se aprueban todas las verificaciones, GDCV para Bare Metal crea el clúster. Si quieres 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 comprobaciones preliminares a pedido para crear clústeres
También puedes ejecutar comprobaciones preliminares de forma independiente, antes de crear un clúster. Hacerlo puede ser beneficioso, ya que las operaciones de clúster principales, como la creación de clústeres, consumen mucho tiempo. Identificar y resolver los problemas por separado antes de iniciar una operación de clúster importante puede ayudarte con la programación.
Clústeres autoadministrados
El siguiente comando valida el archivo de configuración del clúster especificado, pero no intenta crear el clúster en sí:
bmctl check config --cluster CLUSTER_NAME
Reemplaza
CLUSTER_NAME
por el nombre del clúster asociado con el archivo de configuración que estás verificando.Este comando verifica si las máquinas y la red están listas para la creación de clústeres:
bmctl check preflight --cluster CLUSTER_NAME
Reemplaza
CLUSTER_NAME
por el nombre del clúster que estás verificando.
Clústeres de usuarios
El siguiente comando valida el archivo de configuración del clúster especificado, pero no intenta crear el clúster en sí:
bmctl check config --cluster CLUSTER_NAME --admin-kubeconfig ADMIN_KUBECONFIG
Reemplaza lo siguiente:
CLUSTER_NAME
: Es el nombre del clúster de usuario que estás verificando.ADMIN_KUBECONFIG
: Es la ruta de acceso del archivo kubeconfig del clúster de administrador asociado.
El siguiente comando verifica si las máquinas y la red están listas para la creación de clústeres:
bmctl check preflight --cluster CLUSTER_NAME --admin-kubeconfig ADMIN_KUBECONFIG
bmctl
admite el uso de --kubeconfig
como alias para la marca --admin-kubeconfig
.
Verificaciones previas para actualizaciones de clústeres
Cuando actualizas los clústeres, GDCV para Bare Metal ejecuta de forma automática las comprobaciones preliminares antes de realizar cualquier cambio.
¿Qué se revisa?
Las comprobaciones preliminares para las actualizaciones del clúster comprueban lo siguiente:
Verificaciones de la máquina del nodo:
Las máquinas de clústeres usan un sistema operativo (SO) compatible.
La versión del SO es compatible.
El SO usa una versión de kernel compatible.
En Ubuntu, el firewall uncomplicated (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 tiempo se configura en las máquinas de los nodos.
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 podrá acceder a ella.
* No hay nodos del plano de control ni nodos del balanceador de cargas en modo de mantenimiento.
En Google Cloud, verifica cada nodo y el clúster:
Se verificó la accesibilidad de Container Registry,
gcr.io
. 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 la máquina:
kubelet
está activo y se ejecuta en máquinas de nodos.containerd
está activo y se ejecuta en máquinas de nodos.El estado del extremo de la interfaz de red de contenedor (CNI) está en buen estado.
Los CIDR del Pod no se superponen con las direcciones IP de las máquinas de nodo.
Verificaciones de redes del nodo (varía según la configuración del balanceo de cargas):
Se puede acceder a la VIP para el servidor de la API de Kubernetes.
Se puede acceder a las VIP del balanceador de cargas.
Los nodos pueden comunicarse en los puertos requeridos.
Se aprovisionó la instancia de eventos
etcd
y se cumplen los requisitos de puerto.
Cuando se aprueban todas las verificaciones, GDCV para Bare Metal actualiza el clúster. Si quieres obtener más información sobre la actualización de clústeres, consulta Prácticas recomendadas de GDCV para actualizaciones de clústeres de Bare Metal y Ciclo de vida y etapas de las actualizaciones de clústeres.
Ejecuta comprobaciones preliminares a pedido para actualizaciones de clústeres
El comando bmctl check preflight
te permite ejecutar una verificación previa antes de actualizar el clúster. A fin de comprobar si los clústeres están listos para una actualización, ejecuta el siguiente comando de comprobación previa 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 a fin de verificar si los clústeres están listos para una actualización y ejecutar una verificación previa:
bmctl check preflight --cluster CLUSTER_NAME --kubeconfig ADMIN_KUBECONFIG
Reemplaza lo siguiente:
CLUSTER_NAME
: el nombre del clúster que se actualizaráADMIN_KUBECONFIG
es la ruta al archivo kubeconfig del clúster de administrador.
Cuando creas la verificación previa con este comando para probar una actualización de clúster, se crea un recurso personalizado
PreflightCheck
en el clúster de administrador.
Comprobación previas interna en clústeres existentes
GDCV para Bare Metal realiza comprobaciones preliminares internas de forma automática cuando aplicas recursos de Kubernetes a un clúster existente. Si falla alguna de las verificaciones, el GDCV para Bare Metal no cambia ninguno de los nodos relacionados, a menos que omites las verificaciones de forma explícita.
Omite las verificaciones previas cuando apliques recursos de Kubernetes
Para ignorar las comprobaciones preliminares internas cuando aplicas recursos a clústeres existentes, debes establecer el campo BypassPreflightCheck
como true
en el archivo de configuración del clúster.
Este es parte de un archivo de configuración de clúster que muestra el campo bypassPreflightCheck
configurado como 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.16.8
...
Ejecuta las comprobaciones preliminares y las verificaciones de estado más recientes
Cuando usas bmctl
para ejecutar comprobaciones preliminares o de estado, puedes agregar la marca --check-image-version latest
al comando a fin de realizar las verificaciones desde la versión más reciente del parche GDCV para Bare Metal. Esto puede ayudarte a identificar problemas conocidos sin crear o actualizar primero tu clúster.
A fin de usar la lista más reciente de verificaciones a fin de determinar si tus máquinas y redes están listas para la creación de clústeres, haz lo siguiente:
bmctl check preflight --cluster CLUSTER_NAME --check-image-version latest
Reemplaza
CLUSTER_NAME
por el nombre del clúster que estás verificando.
También puedes realizar las últimas verificaciones de estado de un clúster activo para determinar si está en buen estado.
Para realizar las verificaciones de estado más actualizadas en un clúster activo, haz lo siguiente:
bmctl check cluster --cluster CLUSTER_NAME --check-image-version latest
Reemplaza
CLUSTER_NAME
por el nombre del clúster que estás verificando.
Ignora los resultados de las comprobaciones previas
Si ejecutas verificaciones previas a pedido antes de crear o actualizar clústeres, puedes omitir las comprobaciones preliminares automatizadas. Para omitir las comprobaciones preliminares automatizadas, usa la marca opcional --force
cuando ejecutes bmctl create cluster
o bmctl upgrade cluster
.