Las comprobaciones preliminares son una medida preventiva para ayudar a identificar problemas antes de iniciar una operación de clúster importante, 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 se aprueben. También puedes ejecutar comprobaciones preliminares a pedido.
En este documento, se describe cada verificación, en qué circunstancias se ejecuta automáticamente, cómo y cuándo ejecutarla de forma manual, y cómo interpretar los resultados.
En Google Distributed Cloud puedes ejecutar comprobaciones preliminares para diferentes situaciones:
Google Distributed Cloud ejecuta comprobaciones preliminares cuando creas o actualizas clústeres y recursos del grupo de nodos con
bmctl
. Si las verificaciones fallan, no se realizan cambios. También puedes omitir estas verificaciones o ejecutarlas de manera explícita.Google Distributed Cloud también ejecuta comprobaciones internas previas cuando un administrador o clúster híbrido crea o actualiza recursos de Kubernetes en 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 comprobación preliminar, Google Distributed Cloud crea un recurso PreflightCheck
personalizado. Los recursos personalizados de PreflightCheck
son persistentes y proporcionan un registro de las actividades y los resultados de la verificación previa.
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.
En la respuesta, se enumeran 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 o no. En la siguiente respuesta de ejemplo, 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
PreflightCheck
personalizado 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 comprobació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 ejecutaron las siguientes verificaciones:192.0.2.53
y192.0.2.54
: Verificaciones de nodos (configuración del SO, recursos y software) para máquinas con direcciones IP192.0.2.53
y192.0.2.54
.192.0.2.53-gpc
y192.0.2.54-gcp
: Comprobaciones de conectividad de Google Cloud (acceso a Container Registry y la API de Google) para máquinas con direcciones IP192.0.2.53
y192.0.2.54
.Gcp
: Son las 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) para el 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 aprobaron de forma colectiva.
Registros de comprobaciones preliminares
Cuando las comprobaciones preliminares se ejecutan 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 preliminares se generan en un directorio con el siguiente patrón de nombres
preflight-TIMESTAMP
.Este directorio de comprobación previa se crea en el directorio
log
del clúster en el lugar de trabajobmctl
. De forma predeterminada, la ruta del directoriolog
esbmctl-workspace/CLUSTER_NAME/log
.Los registros de comprobación previa 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 según 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. A estos archivos de registro se les asigna un nombre según la dirección IP del nodo. Por ejemplo, un nombre de archivo podría ser
192.0.2.53-gcp
.Archivo de registro para las verificaciones de acceso de Google Cloud al clúster, que se llama
gcp
.Archivo de registro para las verificaciones de red de nodos, que se llama
node-network
.
Si falla una comprobació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, Google Distributed Cloud ejecuta de forma automática las comprobaciones preliminares antes de que se realicen cambios.
¿Qué elementos están marcados?
Verificaciones previas para la instalación verifica lo siguiente:
Verificaciones de la máquina de 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 no complicado (UFW) está inhabilitado.
En Ubuntu, se puede operar el administrador de paquetes
apt
, y hay paquetes necesarios disponibles.En Red Hat Enterprise Linux, se puede operar el administrador de paquetes
dnf
, y los paquetes necesarios 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 tiempo se configura en las máquinas de nodo.
kubelet
está activo y se está ejecutando en máquinas de nodo.containerd
está activo y se está ejecutando en 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 CIDR del Pod no se superponen con las direcciones IP de la máquina del nodo.
Si el clúster está configurado para usar una duplicación de registro, se puede acceder a esta.
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 del registro, se omite esta verificación.Las APIs de Google son accesibles.
Verificaciones de las herramientas de redes del nodo (varía según la configuración del balanceo de cargas):
La VIP para el servidor de la API de Kubernetes es accesible.
Se puede acceder a las VIP del balanceador de cargas.
Los nodos se pueden comunicar en los puertos requeridos.
Se aprovisiona la instancia de eventos
etcd
y se cumplen los requisitos del puerto.
Cuando se aprueban todas las verificaciones, Google Distributed Cloud crea el clúster. Si deseas 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 la creación del clúster
También puedes ejecutar comprobaciones preliminares de forma independiente, antes de crear un clúster. Esto puede ser beneficioso porque las operaciones de clústeres importantes, como la creación de clústeres, requieren mucho tiempo. Identificar y resolver los problemas por separado antes de comenzar 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 al archivo de configuración que verificas.Este comando verifica si las máquinas y la red están listas para la creación del clúster:
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 del clúster:
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, Google Distributed Cloud ejecuta automáticamente las comprobaciones preliminares antes de que se realicen cambios.
¿Qué elementos están marcados?
Las comprobaciones preliminares de las actualizaciones del clúster verifican lo siguiente:
Verificaciones de la máquina de 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 no complicado (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 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 esta.
* Ningún nodo del plano de control ni del balanceador de cargas está en modo de mantenimiento.
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 del registro, se omite esta verificación.Las APIs de Google son accesibles.
Verificaciones de la máquina:
kubelet
está activo y se está ejecutando en máquinas de nodo.containerd
está activo y se está ejecutando en máquinas de nodo.El estado del extremo de estado de la interfaz de red del contenedor (CNI) está en buen estado.
Los CIDR del Pod no se superponen con las direcciones IP de la máquina del nodo.
Verificaciones de las herramientas de redes del nodo (varía según la configuración del balanceo de cargas):
La VIP para el servidor de la API de Kubernetes es accesible.
Se puede acceder a las VIP del balanceador de cargas.
Los nodos se pueden comunicar en los puertos requeridos.
Se aprovisiona la instancia de eventos
etcd
y se cumplen los requisitos del puerto.
Cuando se aprueban todas las verificaciones, Google Distributed Cloud actualiza el clúster. Si quieres 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 los clústeres.
Ejecuta comprobaciones preliminares a pedido para las actualizaciones del clúster
El comando bmctl check preflight
te permite ejecutar una comprobación preliminar antes de actualizar el clúster. Puedes comprobar si los clústeres están listos para una actualización mediante la ejecución del siguiente comando de verificación previa antes de iniciar 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 comprobar si los clústeres están listos para una actualización y ejecuta 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 comprobación preliminar con este comando para probar la actualización de un clúster, se crea un recurso personalizado
PreflightCheck
en el clúster de administrador.
Comprobación previas interna en clústeres existentes
Google Distributed Cloud realiza comprobaciones internas de manera automática cuando aplicas recursos de Kubernetes a un clúster existente. Si falla alguna de las verificaciones, Google Distributed Cloud no cambia ninguno de los nodos relacionados, a menos que omitas 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 los clústeres existentes, debes configurar el campo BypassPreflightCheck
como true
en el archivo de configuración del clúster.
A continuación, se incluye una parte de un archivo de configuración de clúster en el que se 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.29.100-gke.251
...
Ejecuta las verificaciones preliminares y las verificaciones de estado más recientes
Cuando usas bmctl
para ejecutar verificaciones previas o de estado, puedes agregar la marca --check-image-version latest
al comando para realizar las verificaciones desde la versión más reciente del parche de Google Distributed Cloud. Esto puede ayudarte a identificar problemas conocidos sin crear ni actualizar primero tu clúster.
Si deseas usar la lista de verificaciones más reciente para determinar si tus máquinas y redes están listas para la creación del clúster, haz lo siguiente:
bmctl check preflight --cluster CLUSTER_NAME --check-image-version latest
Reemplaza
CLUSTER_NAME
por el nombre del clúster que verificas.
También puedes realizar las verificaciones de estado más recientes 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 verificas.
Ignora los resultados de las comprobaciones previas
Si ejecutas comprobaciones previas a pedido antes de crear o actualizar clústeres, puedes omitir las comprobaciones preliminares automatizadas. Para omitir las comprobaciones preliminares automáticas, usa la marca opcional --force
cuando ejecutes bmctl create cluster
o bmctl upgrade cluster
.