Planifica una instalación básica en tu hardware

Esta página es la primera parte de una guía que te explica cómo usar Google Distributed Cloud (solo software) para equipos físicos (antes conocido como Google Distributed Cloud Virtual y, anteriormente, como clústeres de Anthos en equipos físicos) para crear una pequeña instalación de prueba de concepto de clústeres de GKE en tu hardware de equipos físicos. En este documento, se muestra cómo configurar un entorno de hardware mínimo y planificar tus direcciones IP. En la guía de seguimiento Crea clústeres básicos, se muestra cómo crear un clúster de administrador y un clúster de usuario.

Esta página está destinada a administradores, arquitectos y operadores que configuran, supervisan y administran el ciclo de vida de la infraestructura tecnológica subyacente. Para obtener más información sobre los roles comunes y las tareas de ejemplo a las que hacemos referencia en el contenido deGoogle Cloud , consulta Tareas y roles comunes de los usuarios de GKE.

Es posible que la infraestructura que configures con esta guía no sea adecuada para tus necesidades de producción y casos de uso reales. Para obtener más información sobre las instalaciones de producción, consulta Elige un modelo de implementación.

Antes de comenzar

  1. Lee Acerca de Google Distributed Cloud.
  2. Familiarízate con algunos conceptos Google Cloud básicos, incluidos los proyectos, los permisos de IAM y las cuentas de servicio.
  3. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

  6. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  7. Verify that billing is enabled for your Google Cloud project.

  8. Toma nota del Google Cloud ID del proyecto, ya que lo necesitarás más adelante.
  9. Descripción general del procedimiento

    La configuración de infraestructura mínima consta de estos pasos principales:

    1. Configura tu estación de trabajo de administrador. Configura una estación de trabajo de administrador de Linux para las tareas de administración locales. Puede ser una máquina existente o dedicada que puede administrar varios clústeres.

    2. Configura las máquinas de los nodos del clúster. Configura al menos tres máquinas para los nodos: un nodo del clúster de administrador, un nodo del plano de control del clúster de usuario y un nodo trabajador del clúster de usuario.

    3. Planifica tu red. Planifica las direcciones IP para las máquinas de nodos, las direcciones IP virtuales (VIP) y los rangos de CIDR de Service y Pod.

    4. Revisa los recursos Google Cloud necesarios. Para crear clústeres, tu proyecto deGoogle Cloud requiere APIs y cuentas de servicio específicas de Google.

    1. Configura tu estación de trabajo de administrador

    La estación de trabajo de administrador aloja herramientas y archivos de configuración para crear y trabajar con tus clústeres.

    Requisitos de hardware

    La estación de trabajo de administrador requiere una gran potencia de procesamiento, memoria y almacenamiento para ejecutar herramientas y almacenar los recursos asociados con la creación y administración de clústeres.

    Asegúrate de que tu estación de trabajo de administrador cumpla con los siguientes requisitos de hardware:

    • Al menos 2 núcleos de CPU
    • Al menos 4 GiB de RAM
    • Al menos 128 GiB de almacenamiento

    Requisitos del sistema operativo

    Para ejecutar bmctl y crear un clúster, la estación de trabajo de administrador debe cumplir con los mismos requisitos de sistema operativo (SO) que los nodos. Cada máquina debe ejecutar una versión compatible de Ubuntu.

    Configura el sistema operativo y el software

    En la estación de trabajo de administrador, instala y configura lo siguiente:

    • Configura Ubuntu

    • Instala gcloud CLI

    • Instalar kubectl

    • Instalar bmctl

    Configura el sistema operativo

    Ejecuta los siguientes comandos para actualizar la configuración del firewall, instalar y configurar Docker, y asegurarte de que cada máquina use la sincronización de tiempo:

    1. Inhabilita el Uncomplicated Firewall (UFW) y verifica su estado:

      sudo ufw disable
      sudo ufw status
      
    2. Quita cualquier versión anterior de Docker, actualiza tu administrador de paquetes y, luego, instala la versión más reciente de Docker:

      sudo apt-get remove docker docker-engine docker.io containerd runc
      sudo apt-get update
      sudo apt-get install \
        apt-transport-https \
        ca-certificates \
        curl \
        gnupg-agent \
        software-properties-common \
        docker.io
      
    3. Verifica que ahora estés ejecutando la versión 19.03+ de Docker:

      sudo docker version
      

      Las versiones del cliente y del servidor deben ser 19.03 o posteriores, como se muestra en la siguiente respuesta de ejemplo:

      Client:
       Version:           20.10.21
       API version:       1.41
       Go version:        go1.18.1
       ...
      
      Server:
       Engine:
        Version:          20.10.21
        API version:      1.41 (minimum version 1.12)
        Go version:       go1.18.1
        ...
      
    4. Crea el grupo docker.

      sudo groupadd docker
      
    5. Agrega tu usuario al grupo de Docker:

      sudo usermod -aG docker $USER
      
    6. Ejecuta el siguiente comando para activar los cambios en tu grupo:

      newgrp docker
      
    7. Ejecuta el siguiente comando para verificar que el reloj del sistema esté sincronizado:

      timedatectl
      

      El resultado de timedatectl debería contener el siguiente estado:

      System clock synchronized: yes
      

    Instala Google Cloud CLI

    Para instalar Google Cloud CLI en Ubuntu, sigue las instrucciones de esta guía de instalación.

    Sigue estos pasos en tu estación de trabajo de administrador para configurar gcloud CLI:

    1. Accede para establecer tu propiedad account de gcloud CLI:

      gcloud auth login
      
    2. Configura la propiedad project de gcloud CLI:

      gcloud config set project PROJECT_ID
      

      Reemplaza PROJECT_ID por el ID de tu proyecto deGoogle Cloud .

    3. Verifica que las propiedades account y project estén configuradas correctamente:

      gcloud config list
      

      En el resultado, se muestran los valores de tus propiedades account y project. Por ejemplo:

      [core]
      account = my-name@google.com
      disable_usage_reporting = False
      project = my-project-1234
      Your active configuration is: [default]
      

    Instalar kubectl

    Para instalar kubectl:

    1. Ejecuta el siguiente comando en tu estación de trabajo de administrador:

      gcloud components install kubectl
      

    Instalar bmctl

    bmctl es la herramienta de línea de comandos propietaria de Google Distributed Cloud que puedes usar para crear y administrar clústeres.

    Para instalar bmctl en tu estación de trabajo de administrador, haz lo siguiente:

    1. Crea un directorio baremetal y agrégalo a tu ruta de acceso. Si estás en tu directorio principal, los comandos son los siguientes:

      mkdir baremetal
      export PATH="$HOME/baremetal:$PATH"
      
    2. Ejecuta el siguiente comando para descargar la versión más reciente del archivo binario bmctl y hacerlo ejecutable:

      gcloud storage cp gs://anthos-baremetal-release/bmctl/1.32.200-gke.104/linux-amd64/bmctl .
      chmod +x ./bmctl
      
    3. Verifica que bmctl esté instalado y se pueda ejecutar:

      bmctl version
      

      La respuesta debería ser similar a la siguiente:

      [2023-05-12 17:36:16+0000] bmctl version: 1.14.2-gke.11, git commit: 4ff1347446a93925a079000b50437d4ecebcdf3a, build date: Mon Feb 27 14:07:30 PST 2023

    Conectividad

    La estación de trabajo de administrador necesita acceso a Google Cloud y a todos los nodos del clúster.

    Acceso a Google Cloud

    La estación de trabajo de administrador accede a Google Cloud para descargar e instalar herramientas y imágenes, procesar solicitudes de autorización, crear cuentas de servicio, administrar el registro y la supervisión, y mucho más. No puedes crear clústeres sin acceso aGoogle Cloud.

    Acceso desde la estación de trabajo de administrador

    Para crear y administrar clústeres desde tu estación de trabajo de administrador, necesitas el siguiente acceso a las máquinas de nodos:

    • Conectividad de capa 3 a todas las máquinas de nodo del clúster.
    • Acceso a la VIP del plano de control.
    • Acceso SSH sin contraseña a todas las máquinas de nodos del clúster como root o como un usuario con privilegios sudo sin contraseña.

    En la siguiente sección, se incluyen instrucciones para configurar SSH en la estación de trabajo de administrador y en las máquinas de nodos.

    2. Configura las máquinas de los nodos del clúster

    Para la instalación mínima de un solo clúster de administrador sin alta disponibilidad y un solo clúster de usuario sin alta disponibilidad, necesitas tres máquinas:

    • Una máquina para un clúster de administrador con un nodo del plano de control

    • Dos máquinas para un clúster de usuario con un nodo del plano de control y un nodo trabajador

    Requisitos de hardware

    Cada máquina de nodo debe cumplir con los siguientes requisitos de hardware:

    • Al menos 2 núcleos de CPU
    • Al menos 4 GiB de RAM
    • Al menos 128 GiB de almacenamiento

    Requisitos del sistema operativo

    Cada máquina de nodo debe ejecutar una versión compatible de Ubuntu.

    Configura Ubuntu

    Configura Ubuntu en cada nodo con las mismas instrucciones que se usaron para la estación de trabajo de administrador.

    Configura el acceso SSH a los nodos

    La estación de trabajo de administrador necesita acceso SSH sin contraseña a todas las máquinas de nodos del clúster. Puedes configurar SSH como root o con un usuario que tenga privilegios sudo sin contraseña.

    Estos son los pasos de alto nivel para configurar SSH para Google Distributed Cloud:

    1. Instala y configura SSH en todas las máquinas

    2. Crea claves SSH y copia la clave pública en cada máquina de nodo

    3. Inhabilita la autenticación con contraseña en las máquinas de nodos

    4. Verifica el acceso SSH entre la estación de trabajo de administrador y las máquinas de nodo

    Instala y configura SSH en todas las máquinas

    Google Distributed Cloud requiere comunicación SSH sin contraseña entre la estación de trabajo de administrador y los nodos del clúster. Los siguientes pasos se deben realizar en la estación de trabajo del administrador y en cada máquina de nodo.

    Para configurar SSH en máquinas que ejecutan Ubuntu, haz lo siguiente:

    1. Si aún no tienes un servidor SSH en ejecución, instala uno ahora:

      sudo apt update
      sudo apt install openssh-server
      sudo systemctl status ssh
      
    2. Para habilitar la autenticación con contraseña de SSH root, quita la marca de comentario de las líneas PermitRootLogin y PasswordAuthentication, o agrégalas al archivo /etc/ssh/sshd_config y establece los valores en yes:

      # Authentication:
      
      #LoginGraceTime 2m
      PermitRootLogin yes
      #StrictModes yes
      #MaxAuthTries 6
      #MaxSessions 10
      ...
      PasswordAuthentication yes
      
    3. Establece una contraseña raíz:

      sudo passwd root
      
    4. Para aplicar los cambios de configuración de SSH, reinicia el servicio de SSH:

      sudo systemctl restart ssh.service
      
    5. Reinicia la máquina.

    6. Verifica que SSH funcione estableciendo una conexión SSH desde otra máquina.

    Crea claves SSH y copia la clave pública en cada máquina de nodo

    Para conexiones seguras y sin contraseña entre la estación de trabajo de administrador y los nodos, crea una clave SSH en tu estación de trabajo de administrador y comparte la clave pública con los nodos.

    1. En tu estación de trabajo de administrador, genera un par de claves pública y privada. No configures una frase de contraseña para las claves:

      ssh-keygen -t rsa
      
    2. En tu estación de trabajo de administrador, copia la clave pública generada en cada una de tus máquinas de nodos:

      ssh-copy-id -i PUBLIC_KEY root@CLUSTER_NODE_IP
      

      Reemplaza lo siguiente:

      • PUBLIC_KEY: Es la ruta de acceso al archivo que contiene la clave pública SSH. De forma predeterminada, la ruta de acceso es /home/USERNAME/.ssh/id_rsa.pub.
      • CLUSTER_NODE_IP: la dirección IP de la máquina del nodo
    Inhabilita la autenticación con contraseña en las máquinas de nodos

    En este punto, ya no es necesario que tengas habilitada la autenticación con contraseña.

    Para cada máquina de nodo, haz lo siguiente:

    1. Abre /etc/ssh/sshd_config, configura PasswordAuthentication como no y guarda el archivo.

    2. Reinicia el servicio SSH.

      sudo systemctl restart ssh.service
      
    Verifica el acceso SSH entre la estación de trabajo de administrador y las máquinas de nodo

    Cuando SSH está configurado correctamente, puedes establecer una conexión SSH a la máquina del nodo desde la estación de trabajo de administrador (como raíz) sin una contraseña.

    Para verificar que la autenticación de clave pública funcione entre tu estación de trabajo de administrador y los nodos del clúster, haz lo siguiente:

    1. En la estación de trabajo de administrador, ejecuta el siguiente comando para cada máquina de nodo:

      ssh -o IdentitiesOnly=yes -i PRIVATE_KEY root@CLUSTER_NODE_IP
      

      Reemplaza lo siguiente:

      • PRIVATE_KEY: Es la ruta de acceso al archivo que contiene la clave privada SSH. De forma predeterminada, la ruta de acceso es /home/USERNAME/.ssh/id_rsa.
      • CLUSTER_NODE_IP: la dirección IP de la máquina del nodo

    3. Planifica tu estrategia de redes

    Cuando instales clústeres, es importante que planifiques tus direcciones IP y te asegures de no crear conflictos de direcciones. Es posible que necesites la ayuda de tu administrador de red para encontrar direcciones adecuadas, incluso para esta instalación simple. Sin contar los CIDR de Pods y Services, necesitas al menos 15 direcciones IP únicas para una instalación mínima del clúster de administrador y del clúster de usuario.

    Planifica y especifica las direcciones IP para los siguientes componentes del clúster:

    • Nodos del clúster: Necesitas una dirección IP para cada máquina de nodo.
    • Direcciones IP virtuales (VIP): Necesitas VIP para acceder a los servidores de la API de Kubernetes, el proxy de entrada y los servicios de tipo LoadBalancer.
    • Pods y Services: Necesitas rangos de direcciones CIDR para admitir cada Pod y Service que se ejecuten en tus clústeres.

    En el resto de esta sección, se incluyen ejemplos ilustrativos de valores que funcionan para esta instalación en una red hipotética. Tus valores serán diferentes.

    Para esta instalación pequeña, coloca tu estación de trabajo de administrador, el nodo del clúster de administrador y los nodos del clúster de usuario en el mismo dominio de capa 2. Por ejemplo, supongamos que todas las direcciones IP del rango 172.16.20.0/24 se enrutan a un dominio de capa 2 en particular. Además, supongamos que tu administrador de red indica que puedes usar 172.16.20.10 - 172.16.20.12 para las direcciones de máquinas de nodos y 172.16.0.13 - 172.16.20.24 para las VIPs.

    En el siguiente diagrama, se ilustra un dominio de capa 2 que tiene una estación de trabajo de administrador, un clúster de administrador y un clúster de usuario:

    Direcciones IP para un clúster de administrador y un clúster de usuario.
    Direcciones IP para un clúster de administrador y un clúster de usuario (haz clic para ampliar)

    Ejemplo de direcciones IP de nodos de clúster

    En la siguiente tabla, se muestra un ejemplo de cómo se pueden usar las direcciones IP para los nodos del clúster:

    Máquina Descripción Dirección IP
    Nodo del plano de control del clúster de administrador Máquina física que funciona como el nodo del plano de control para el clúster de administrador 172.16.20.10
    Nodo del plano de control del clúster de usuario Máquina física que funciona como nodo del plano de control para el clúster de usuario 172.16.20.11
    Nodo trabajador del clúster de usuario Máquina física que ejecuta cargas de trabajo del usuario 172.16.20.12

    Ejemplo de direcciones IP virtuales (VIP)

    En la siguiente tabla, se muestra un ejemplo de cómo podrías especificar las VIP para tus clústeres:

    VIP Descripción Dirección IP
    Dirección VIP del plano de control del clúster de administrador Dirección VIP del plano de control del clúster de administrador (servidor de la API de Kubernetes del clúster de administrador) 172.16.20.13
    Dirección VIP del plano de control del clúster de usuario Dirección VIP del plano de control del clúster de usuario (servidor de la API de Kubernetes del clúster de usuario) 172.16.20.14
    Dirección VIP de entrada VIP de entrada (incluida en el rango de grupos de direcciones de MetalLB) 172.16.20.15
    Direcciones VIP del servicio Diez direcciones para usar como direcciones IP externas para los Services de tipo LoadBalancer. Las direcciones se asignan según sea necesario en los nodos del clúster de usuario.

    Este rango incluye la VIP de entrada. Esta superposición de direcciones IP es un requisito para MetalLB, el balanceador de cargas incluido predeterminado.

    172.16.20.15 - 172.16.20.24

    Direcciones IP para Pods y servicios

    Además de las direcciones IP que especificaste para los nodos del clúster y las VIP, debes especificar direcciones para los Pods y los Services. Especificas un rango CIDR para usar en las direcciones IP del Pod y otro rango en CIDR que se usará en las direcciones ClusterIP de los servicios de Kubernetes. Usa direcciones IP en el espacio de direcciones privadas, como se describe en el RFC 1918. Estas direcciones se especifican como parte de la configuración del clúster, como se ilustra en la siguiente parte de esta guía.

    Como parte de tu planificación de IP, decide qué rangos de CIDR quieres usar para los Pods y los Services. A menos que tengas una razón para hacer lo contrario, usa los siguientes rangos sugeridos:

    Objetivo Rango de CIDR prepropagado
    Pods del clúster de administrador 192.168.0.0/16
    Services de clústeres de administrador 10.96.0.0/20
    Pods del clúster de usuario 192.168.0.0/16
    Services de clústeres de usuarios 10.96.0.0/20

    Los rangos sugeridos ilustran estos puntos:

    • El rango de CIDR de Pod puede ser el mismo para varios clústeres en el modelo de red predeterminado del modo isla.

    • El rango de CIDR de Services puede ser el mismo para varios clústeres.

    • Por lo general, necesitarás más Pods que Services en un clúster, por lo que es probable que quieras un rango de CIDR de Pod que sea mayor que el rango de CIDR del Service. Por ejemplo, el rango de Pod sugerido para un clúster de usuario tiene 2(32-16) = 216 direcciones, pero el rango de Service sugerido para un clúster de usuario solo tiene 2(32-20) = 212 direcciones.

    Evita la superposición

    Para evitar la superposición con las direcciones IP a las que se pueda acceder en tu red, es posible que debas usar rangos CIDR diferentes de las sugerencias anteriores. Los rangos de Service y Pod no deben superponerse con ninguna dirección fuera del clúster a la que deseas llegar desde dentro del clúster.

    Por ejemplo, supongamos que el rango de Service es 10.96.232.0/24 y el rango de Pod es 192.168.0.0/16. El tráfico enviado desde un Pod a una dirección en cualquiera de esos rangos se trata como tráfico en el clúster y no puede llegar a ningún destino fuera del clúster.

    En particular, los rangos de Service y Pod no deben superponerse con lo siguiente:

    • Direcciones IP de nodos en cualquier clúster

    • Direcciones IP que usan las máquinas del balanceador de cargas

    • VIP que usan los balanceadores de cargas y los nodos del plano de control

    • Dirección IP de los servidores DNS o NTP

    4. Revisa los recursos Google Cloud obligatorios

    Antes de que puedas crear clústeres, Google Distributed Cloud requiere que se habilite un conjunto específico de APIs de Google en tu proyecto Google Cloud asociado. Para usar las APIs de Google, Google Distributed Cloud requiere cuentas de servicio configuradas con roles de IAM específicos en tu proyecto asociado Google Cloud .

    El proceso para crear clústeres en la siguiente parte de esta guía, Crea clústeres básicos, habilita las APIs y crea cuentas de servicio automáticamente.

    Estas son las APIs de Google que se habilitan automáticamente:

    • anthos.googleapis.com
    • anthosaudit.googleapis.com
    • anthosgke.googleapis.com
    • cloudresourcemanager.googleapis.com
    • connectgateway.googleapis.com
    • container.googleapis.com
    • gkeconnect.googleapis.com
    • gkehub.googleapis.com
    • gkeonprem.googleapis.com
    • iam.googleapis.com
    • logging.googleapis.com
    • monitoring.googleapis.com
    • opsconfigmonitoring.googleapis.com
    • serviceusage.googleapis.com
    • stackdriver.googleapis.com
    • storage.googleapis.com

    En la siguiente tabla, se describen las cuentas de servicio que se crean automáticamente:

    Cuenta de servicio Objetivo Funciones
    anthos-baremetal-gcr Google Distributed Cloud usa esta cuenta de servicio para descargar imágenes de contenedor de Artifact Registry. Ninguno
    anthos-baremetal-connect El agente de Connect usa esta cuenta de servicio para mantener una conexión entre tu clúster y Google Cloud. Esto permite el acceso al clúster y a las funciones de administración de cargas de trabajo, incluida la consola de Google Cloud y lapuerta de enlace de Connect para interactuar con tu clúster. roles/gkehub.connect
    anthos-baremetal-register El agente de Connect usa esta cuenta de servicio para registrar tus clústeres en una flota. roles/gkehub.admin
    anthos-baremetal-cloud-ops El agente de Stackdriver usa esta cuenta de servicio para exportar registros y métricas de clústeres a Cloud Logging y Cloud Monitoring. roles/logging.logWriter
    roles/monitoring.metricWriter
    roles/stackdriver.resourceMetadata.writer
    roles/opsconfigmonitoring.resourceMetadata.writer
    roles/monitoring.dashboardEditor

    ¿Qué sigue?

    Crea clústeres básicos