Esta página es la primera parte de una guía en la que se explica una pequeña instalación de prueba de concepto de GKE en Bare Metal. En este documento, se muestra cómo configurar un entorno de hardware mínimo y planificar tus direcciones IP. En la página de seguimiento Crea clústeres básicos, se muestra cómo crear un clúster de administrador y uno de usuario. Es posible que la infraestructura que configuraste 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
- Consulta Acerca de GKE en Bare Metal.
- Familiarízate con algunos conceptos básicos de Google Cloud, incluidos los proyectos, los permisos de IAM y las cuentas de servicio.
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- Toma nota del ID del proyecto de Google Cloud, ya que lo necesitarás más tarde.
Descripción general del procedimiento
La configuración de infraestructura mínima consta de los siguientes pasos principales:
Configura la 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 pueda administrar varios clústeres.
Configura las máquinas de 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.
Planifica las herramientas de redes. Planifica las direcciones IP de las máquinas de nodo, las direcciones IP virtuales (VIP) y los rangos de CIDR de Service y Pod.
Revisa los recursos necesarios de Google Cloud. Para crear clústeres, tu proyecto de Google Cloud requiere APIs de Google y cuentas de servicio específicas.
1. Configura la estación de trabajo de administrador
La estación de trabajo de administrador aloja herramientas y archivos de configuración para crear clústeres y trabajar con ellos.
Requisitos de hardware
La estación de trabajo de administrador requiere una potencia de procesamiento, memoria y almacenamiento significativos para ejecutar herramientas y almacenar los recursos asociados con la creación y administración de clústeres.
Asegúrate de que la 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
Configura el software y el sistema operativo
En la estación de trabajo de administrador, instala y configura los siguientes elementos:
Configura Ubuntu
Instala gcloud CLI
Instalar
kubectl
Instalar
bmctl
Configura el sistema operativo
Para ejecutar bmctl
y crear un clúster, la estación de trabajo de administrador tiene los mismos requisitos de sistema operativo (SO) que los nodos. Cada máquina debe ejecutar una versión compatible de Ubuntu, como Ubuntu 20.04.
Ejecuta los siguientes comandos para actualizar la configuración del firewall, instalar y configurar Docker, y asegurarte de que cada máquina use sincronización de hora:
Inhabilita Uncomplicated Firewall (UFW) y verifica su estado:
sudo ufw disable sudo ufw status
Quita las versiones anteriores de Docker, actualiza el administrador de paquetes y, luego, instala la última versión 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
Verifica que estés ejecutando la versión 19.03+ de Docker:
sudo docker version
Las versiones de cliente y de 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 ...
Crea el grupo
docker
.sudo groupadd docker
Agregate al grupo de Docker:
sudo usermod -aG docker $USER
Ejecuta el siguiente comando para activar los cambios en el grupo:
newgrp docker
Ejecuta el siguiente comando para verificar que el reloj del sistema esté sincronizado:
timedatectl
El resultado de
timedatectl
debe 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.
Realiza los siguientes pasos en tu estación de trabajo de administrador para configurar gcloud CLI:
Accede para configurar la propiedad
account
de gcloud CLI:gcloud auth login
Configura la propiedad
project
de gcloud CLI:gcloud config set project PROJECT_ID
Reemplaza
PROJECT_ID
por el ID del proyecto de Google Cloud.Verifica que las propiedades
account
yproject
estén configuradas correctamente:gcloud config list
En el resultado, se muestran los valores de las propiedades
account
yproject
. Por ejemplo:[core] account = my-name@google.com disable_usage_reporting = False project = my-project-1234 Your active configuration is: [default]
Instale kubectl
Para instalar kubectl
, haz lo siguiente:
Ejecuta el siguiente comando en la estación de trabajo de administrador:
gcloud components install kubectl
Instale bmctl
bmctl
es la herramienta de línea de comandos propiedad de GKE en Bare Metal que puedes usar a fin de crear y administrar clústeres.
Para instalar bmctl
en la estación de trabajo de administrador, haz lo siguiente:
Crea un directorio
baremetal
y agrégalo a tu ruta de acceso. Si estás en el directorio principal, los comandos son los siguientes:mkdir baremetal export PATH="$HOME/baremetal:$PATH"
Ejecuta el siguiente comando para descargar la última versión del archivo binario
bmctl
y hacer que sea ejecutable:gsutil cp gs://anthos-baremetal-release/bmctl/1.28.400-gke.77/linux-amd64/bmctl . chmod +x ./bmctl
Verifica que
bmctl
esté instalado y ejecutable: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 y también instalar imágenes y herramientas, 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 a Google Cloud.
Accede desde la estación de trabajo de administrador
Para crear y administrar clústeres desde la estación de trabajo de administrador, necesitas el siguiente acceso a las máquinas del nodo:
- 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 privilegiossudo
sin contraseña
En la siguiente sección, se incluyen instrucciones para configurar SSH en la estación de trabajo de administrador y las máquinas de nodos.
2. Configura las máquinas de nodos del clúster
Para la instalación mínima de un solo clúster de administrador que no es de alta disponibilidad y un único clúster de usuario que no es de 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 nodos debe cumplir los siguientes requisitos de hardware:
- Al menos 2 núcleos de CPU
- Al menos 4 GiB de RAM
- Al menos 128 GiB de almacenamiento
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 nodo del clúster. Puedes configurar SSH como root
o con un usuario que tenga privilegios de sudo
sin contraseña.
Estos son los pasos de alto nivel para configurar SSH para GKE en Bare Metal:
Instala y configura SSH en todas las máquinas
Crea claves SSH y copia la clave pública en cada máquina de nodo
Inhabilita la autenticación con contraseña en las máquinas de los nodos
Verifica el acceso SSH entre la estación de trabajo de administrador y las máquinas de los nodos
Instalar y configurar SSH en todas las máquinas
GKE en Bare Metal requiere una 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 de administrador y en cada máquina de nodos.
Para configurar SSH en máquinas que ejecutan Ubuntu, haz lo siguiente:
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
Para habilitar la autenticación con contraseña SSH de
root
, quita el comentario o agrega las líneasPermitRootLogin
yPasswordAuthentication
al archivo/etc/ssh/sshd_config
, y configura los valores comoyes
:# Authentication: #LoginGraceTime 2m PermitRootLogin yes #StrictModes yes #MaxAuthTries 6 #MaxSessions 10 ... PasswordAuthentication yes
Configura una contraseña raíz:
sudo passwd root
Para aplicar los cambios en la configuración de SSH, reinicia el servicio SSH:
sudo systemctl restart ssh.service
Reinicia la máquina.
Establece una conexión SSH desde otra máquina para verificar que SSH funcione.
Crea claves SSH y copia la clave pública en cada máquina de nodo
Para obtener conexiones seguras y sin contraseña entre la estación de trabajo de administrador y los nodos, crea una clave SSH en la estación de trabajo de administrador y comparte la clave pública con los nodos.
En la estación de trabajo de administrador, genera un par de claves pública y privada. No establezcas una frase de contraseña para las claves:
ssh-keygen -t rsa
En la estación de trabajo de administrador, copia la clave pública generada en cada una de tus máquinas de nodo:
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 de nodos
Inhabilitar la autenticación con contraseña en las máquinas de los nodos
En este punto, ya no es necesario que tengas habilitada la autenticación con contraseña.
En cada máquina de nodos:
Abre
/etc/ssh/sshd_config
, establecePasswordAuthentication
enno
y guarda el archivo.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 del nodo
Cuando SSH se configura de forma correcta, puedes establecer una conexión SSH a la máquina de nodos 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 la estación de trabajo de administrador y los nodos del clúster, haz lo siguiente:
En la estación de trabajo de administrador, ejecuta el siguiente comando para cada máquina de nodos:
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 es/home/USERNAME/.ssh/id_rsa
.CLUSTER_NODE_IP
: La dirección IP de la máquina de nodos
3. Planifica tus herramientas de redes
Cuando instalas clústeres, es importante que planifiques tus direcciones IP, lo que incluye asegurarte de no crear ningún conflicto de direcciones. Es posible que necesites que el administrador de red te ayude a encontrar las direcciones adecuadas, incluso para esta instalación simple. Sin contar los CIDR de los Pods y Services, necesitas al menos 15 direcciones IP únicas para una instalación mínima del clúster de administrador y de usuario.
Planifica y especifica direcciones IP para los siguientes componentes del clúster:
- Nodos del clúster: Necesitas una dirección IP para cada máquina de nodos
- Direcciones IP virtuales (VIP): Necesitas VIP para acceder a los servidores de la API de Kubernetes, el proxy de entrada y los Services de tipo LoadBalancer
- Pods y Services: Necesitas rangos de direcciones CIDR para adaptar cada Pod y Service que se ejecutan en tus clústeres.
El resto de esta sección tiene 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 la 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 en el rango 172.16.20.0/24
se enrutan a un dominio de capa 2 particular. Supongamos también que el administrador de red indica que puedes usar 172.16.20.10
- 172.16.20.12
para las direcciones de la máquina de nodos y 172.16.0.13
- 172.16.20.24
para las VIP.
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 de nodo del clúster de ejemplo
En la siguiente tabla, se muestra un ejemplo de cómo se podrían 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 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 | 16/17/20/11 |
Nodo trabajador del clúster de usuario | Máquina física que ejecuta las cargas de trabajo del usuario | 16/17/2012 |
Ejemplos de direcciones IP virtuales (VIP)
En la siguiente tabla, se muestra un ejemplo de cómo podrías especificar VIP para los 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) | 16/172/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) | 16/16/20/14 |
Dirección VIP de entrada | VIP de entrada (incluida en el rango de grupos de direcciones de MetalLB) | 16/17/2015 |
Direcciones VIP del servicio | Diez direcciones para usar como direcciones IP externas para servicios 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 en paquetes 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 destinadas a los Pods y Services. Especifica un rango CIDR que se usará para las direcciones IP del Pod y otro rango CIDR que se usará con las direcciones ClusterIP
de los servicios de Kubernetes. Usa direcciones IP en el espacio de direcciones privadas, como se describe en 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 deseas usar para los Pods y Services. A menos que tengas un motivo para hacerlo, 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 intervalos sugeridos ilustran estos puntos:
El rango de CIDR del Pod puede ser el mismo para varios clústeres en el modelo de red predeterminado de modo isla.
El rango de CIDR del Service puede ser el mismo para varios clústeres.
Por lo general, necesitas más Pods que Services en un clúster, por lo que es probable que quieras un rango de CIDR de Pod que sea más grande que el rango de CIDR del Service. Por ejemplo, el rango de Pods 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 direcciones (32-20) = 212.
Evita la superposición
Para evitar la superposición con direcciones IP a las que se puede 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 tu rango de Service es 10.96.232.0/24
y tu 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 en el clúster y no puede llegar a ningún destino fuera de este.
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 servidores DNS o servidores NTP
4. Revisa los recursos necesarios de Google Cloud
Antes de poder crear clústeres, GKE en Bare Metal requiere que se habilite un conjunto específico de APIs de Google en tu proyecto de Google Cloud asociado. Para usar las APIs de Google, GKE en Bare Metal requiere cuentas de servicio configuradas con funciones de IAM específicas en tu proyecto de Google Cloud asociado.
El proceso de creación de clústeres de la siguiente parte de esta guía, Crea clústeres básicos, habilita las APIs y crea cuentas de servicio de forma automática.
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 de forma automática:
Cuenta de servicio | Objetivo | Roles |
---|---|---|
anthos-baremetal-gcr | GKE en Bare Metal usa esta cuenta de servicio para descargar imágenes de contenedor desde Container Registry. | Ninguna |
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, como la consola de Google Cloud y la puerta de enlace de conexión 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 con 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 |