Crea clústeres de administrador y usuario

Aprende a crear un clúster de administrador y de usuario con la configuración básica.

En los pasos de este tema, se supone que usaste gkeadm para crear tu estación de trabajo de administrador. Si no usaste gkeadm y seguiste el tema avanzado Crea una estación de trabajo de administrador con una dirección IP estática, es posible que debas realizar ajustes como se explica en cada paso. Para una estación de trabajo de administrador DHCP, debes usar la guía de instalación de DHCP correspondiente.

Si estás detrás de un proxy, todos los comandos de gkectl usan de forma automática el mismo proxy que estableciste en el archivo de configuración para las solicitudes de Internet de la estación de trabajo de administrador. Si la estación de trabajo de administrador no está ubicada detrás del mismo proxy, consulta las “Opciones de proxy manuales” en los temas avanzados de Crea una estación de trabajo de administrador: IP estática | DHCP.

Establece una conexión SSH a la estación de trabajo de administrador

Para establecer una conexión SSH a la estación, sigue las instrucciones en Obtén una conexión SSH a la estación de trabajo de administrador.

La cuenta de servicio incluida en la lista de anunciantes permitidos está activada en la estación de trabajo de administrador. Realiza todos los pasos restantes de este tema en la estación de trabajo de administrador.

Configura direcciones IP estáticas para el clúster de administrador

Para especificar las direcciones IP estáticas que deseas usar en el clúster de administrador, crea un archivo de configuración de host llamado admin-hostconfig.yaml. Para este ejercicio, debes especificar cinco direcciones IP que usará el clúster de administrador.

El siguiente es un ejemplo de un archivo de configuración de host con cinco hosts:

hostconfig:
  dns: 172.16.255.1
  tod: 216.239.35.0
  otherdns:
  - 8.8.8.8
  - 8.8.4.4
  othertod:
  - ntp.ubuntu.com
  searchdomainsfordns:
  - "my.local.com"
blocks:
  - netmask: 255.255.252.0
    gateway: 172.16.23.254
    ips:
    - ip: 172.16.20.10
      hostname: admin-host1
    - ip: 172.16.20.11
      hostname: admin-host2
    - ip: 172.16.20.12
      hostname: admin-host3
    - ip: 172.16.20.13
      hostname: admin-host4
    - ip: 172.16.20.14
      hostname: admin-host5

El campo ips es un arreglo de direcciones IP y nombres de host. Son las direcciones IP y los nombres de host que GKE On-Prem asignará a los nodos del clúster de administrador.

En el archivo de configuración de host, también debes especificar las direcciones de los servidores DNS, los servidores de tiempo y la puerta de enlace predeterminada que usarán los nodos del clúster de administrador.

El campo searchdomainsfordns es un arreglo de dominios de búsqueda de DNS que se usa en el clúster. Estos dominios se usan como parte de una lista de búsqueda de dominios.

Configura direcciones IP estáticas para tu clúster de usuario

Para especificar las direcciones IP estáticas que deseas usar en el clúster de usuario, crea un archivo de configuración de host llamado user-hostconfig.yaml.

El siguiente es un ejemplo de un archivo de configuración de host con tres hosts:

hostconfig:
  dns: 172.16.255.1
  tod: 216.239.35.0
  otherdns:
  - 8.8.8.8
  - 8.8.4.4
  othertod:
  - ntp.ubuntu.com
  searchdomainsfordns:
  - "my.local.com"
blocks:
  - netmask: 255.255.252.0
    gateway: 172.16.23.254
    ips:
    - ip: 172.16.20.15
      hostname: user-host1
    - ip: 172.16.20.16
      hostname: user-host2
    - ip: 172.16.20.17
      hostname: user-host3

El campo ips es un arreglo de direcciones IP y nombres de host. Estas son las direcciones IP y los nombres de host que GKE On-Prem asignará a los nodos del clúster de usuario.

En el archivo de configuración del host, también debes especificar las direcciones de los servidores DNS, los servidores de tiempo y la puerta de enlace predeterminada que usarán los nodos del clúster de usuario.

El campo searchdomainsfordns es un arreglo de dominios de búsqueda de DNS que se usa en el clúster. Estos dominios se usan como parte de una lista de búsqueda de dominios.

Campos propagados en tu archivo de configuración de GKE On-Prem

Recuerda que cuando creaste la estación de trabajo de administrador, completaste un archivo de configuración llamado admin-ws-config.yaml. La herramienta de línea de comandos de gkeadm usó el archivo admin-ws-config.yaml para crear la estación de trabajo de administrador.

Cuando gkeadm creó la estación de trabajo de administrador, generó un segundo archivo de configuración llamado config.yaml. Este archivo de configuración, que se encuentra en la estación de trabajo de administrador, se usa para crear clústeres de GKE On-Prem.

Los archivos admin-ws-config.yaml y config.yaml tienen varios campos en común. Los valores para esos campos en común ya están propagados en el archivo config.yaml.

Estos son los campos que ya se propagaron con los valores que proporcionaste cuando creaste la estación de trabajo de administrador:

vcenter:
  credentials:
    address:
    username:
    password:
  datacenter:
  datastore:
  cluster:
  network:
  resourcepool:
  cacertpath:
gkeconnect:
  projectid:
  registerserviceaccountkeypath:
  agentserviceaccountkeypath:
stackdriver:
  projectid:
  serviceaccountkeypath:
gcrkeypath:

Completa el resto del archivo de configuración de GKE On-Prem

A continuación, debes completar los campos restantes del archivo config.yaml.

bundlepath

El archivo de paquete de GKE On-Prem contiene todos los componentes de una versión particular de GKE On-Prem. Establece el valor de bundlepath como la ruta de acceso del archivo de paquete de la estación de trabajo de administrador.

bundlepath: /var/lib/gke/bundles/gke-onprem-vsphere-1.4.3-gke.3-full.tgz

vcenter.datadisk

GKE On-Prem crea un disco de máquina virtual (VMDK) para contener los datos del objeto de Kubernetes del clúster de administrador. El instalador crea el VMDK por ti, pero debes proporcionar un nombre para él en el campo vcenter.datadisk. Por ejemplo:

vcenter:
  ...
  datadisk: "my-disk.vmdk"
Almacén de datos de vSAN: Crea una carpeta para el VMDK

Si usas un almacén de datos de vSAN, debes colocar el VMDK en una carpeta. Debes crear la carpeta de forma manual con anticipación. Para crear la carpeta, puedes usar govc:

govc datastore.mkdir -namespace=true my-gke-on-prem-folder

Luego, establece vcenter.datadisk en la ruta de acceso del VMDK e incluye la carpeta. Por ejemplo:

vcenter:
...
datadisk: "my-gke-on-prem-folder/my-disk.vmdk"

En la versión 1.1.1, un problema conocido requiere que proporciones el identificador único universal (UUID) de la carpeta en lugar de la ruta de acceso.

proxy

Si la red está detrás de un servidor proxy, debes especificar la dirección del proxy y las direcciones que no deben pasar por el servidor proxy.

Establece proxy.url para especificar la dirección HTTP del servidor proxy. Debes incluir el número de puerto incluso si es el mismo que el puerto predeterminado del esquema. Los clústeres de GKE On-Prem usan el servidor proxy que especificas aquí. Además, la estación de trabajo de administrador está configurada de forma automática para usar este mismo servidor proxy, a menos que establezcas la variable de entorno HTTPS_PROXY en la estación de trabajo de administrador.

Establece proxy.noproxy para definir una lista de direcciones IP, rangos de direcciones IP, nombres de host y nombres de dominio que no deben pasar por el servidor proxy. Cuando GKE On-Prem envía una solicitud a una de estas direcciones, hosts o dominios, esa solicitud se envía directamente.

Ejemplo:

proxy:
  url: "http://my-proxy.example.local:80"
  noproxy: "10.151.222.0/24, my-host.example.local,10.151.2.1"

admincluster.ipblockfilepath

Debido a que usas direcciones IP estáticas, debes tener un archivo de configuración de host como se describe en Configura direcciones IP estáticas. Proporciona la ruta de acceso al archivo de configuración de host en el campo admincluster.ipblockfilepath. Por ejemplo:

admincluster:
  ipblockfilepath: "/my-config-directory/admin-hostconfig.yaml"

admincluster.bigip.credentials

GKE On-Prem necesita conocer la dirección IP o el nombre de host, el nombre de usuario y la contraseña de tu balanceador de cargas BIG-IP de F5. Establece los valores en admincluster.bigip para proporcionar esta información. Coloca un ancla, &bigip-credentials, después de credentials para que no tengas que repetir esta información en la sección usercluster. Por ejemplo:

admincluster:
  ...
  bigip:
    credentials: &bigip-credentials
      address: "203.0.113.2"
      username: "my-admin-f5-name"
      password: "rJDlm^%7aOzw"

admincluster.bigip.partition

Antes creaste una partición de BIG-IP para el clúster de administrador. Establece admincluster.bigip.partition en el nombre de la partición. Por ejemplo:

admincluster:
  ...
  bigip:
    partition: "my-admin-f5-partition"

admincluster.vips

Establece el valor de admincluster.vips.controlplanevip en la dirección IP que elegiste configurar en el balanceador de cargas para el servidor de la API de Kubernetes del clúster de administrador. Establece el valor de ingressvip como la dirección IP que elegiste configurar en el balanceador de cargas para el servicio de entrada del clúster de administrador. Por ejemplo:

admincluster:
  ...
  vips:
    controlplanevip: 203.0.113.3
    ingressvip: 203.0.113.4

admincluster.serviceiprange y admincluster.podiprange

El clúster de administrador debe tener un rango de direcciones IP que se usa con los Services y uno que se usa con los Pods. Estos rangos se especifican en los campos admincluster.serviceiprange y admincluster.podiprange. Estos campos se propagan cuando ejecutas gkectl create-config. Si quieres, puedes cambiar los valores propagados por los valores que desees.

Los rangos de Services y Pods no deben superponerse. Tampoco deben superponerse en ningún clúster con las direcciones IP que se usan para los nodos.

Ejemplo:

admincluster:
  ...
  serviceiprange: 10.96.232.0/24
  podiprange: 192.168.0.0/16

usercluster.ipblockfilepath

Debido a que usas direcciones IP estáticas, debes tener un archivo de configuración de host como se describe en Configura direcciones IP estáticas. Proporciona la ruta de acceso al archivo de configuración de host en el campo usercluster.ipblockfilepath. Por ejemplo:

usercluster:
  ipblockfilepath: "/my-config-directory/user-hostconfig.yaml"

usercluster.bigip.credentials

Ingresa una referencia, *bigip-credentials, después de usercluster.bigip.credentials para usar los mismos valores de address, username y password que especificaste en admincluster.bigip.credentials. Por ejemplo:

usercluster:
  ...
  bigip:
    credentials: *bigip-credentials

usercluster.bigip.partition

Antes creaste una partición de BIG-IP para el clúster de usuario. Establece usercluster.bigip.partition en el nombre de la partición. Por ejemplo:

usercluster:
  ...
  bigip:
    partition: "my-user-f5-partition"
  ...

usercluster.vips

Establece el valor de usercluster.vips.controlplanevip como la dirección IP que elegiste configurar en el balanceador de cargas para el servidor de la API de Kubernetes del clúster de usuario. Establece el valor de ingressvip como la dirección IP que elegiste configurar en el balanceador de cargas para el servicio de entrada del clúster de usuario. Por ejemplo:

usercluster:
  ...
  vips:
    controlplanevip: 203.0.113.6
    ingressvip: 203.0.113.7

usercluster.serviceiprange y usercluster.podiprange

El clúster de usuario debe tener un rango de direcciones IP que se usa con los Services y un rango de direcciones IP que se usa con los Pods. Estos rangos se especifican en los campos usercluster.serviceiprange y usercluster.podiprange. Estos campos se propagan cuando ejecutas gkectl create-config. Si lo prefieres, puedes cambiar los valores propagados a los valores que elijas.

Los rangos de Services y Pods no deben superponerse. Tampoco deben superponerse en ningún clúster con las direcciones IP que se usan para los nodos.

Ejemplo:

usercluster:
  ...
  serviceiprange: 10.96.233.0/24
  podiprange: 172.16.0.0/12

Inhabilita las reglas de antiafinidad de DRS de VMware

GKE On-Prem crea de forma automática reglas de antiafinidad de Distributed Resource Scheduler (DRS) de VMware para los nodos del clúster de usuario, de modo que se distribuyen en al menos tres hosts físicos del centro de datos.

Para esta función, se requiere que el entorno de vSphere cumpla con las siguientes condiciones:

  • DRS de VMware debe estar habilitado. Para DRS de VMware, se requiere la edición de licencia vSphere Enterprise Plus. Para aprender a habilitar DRS, consulta Enabling VMware DRS in a cluster (Habilita DRS de VMware en un clúster).
  • La cuenta de usuario de vSphere proporcionada en el campo vcenter debe tener el permiso Host.Inventory.EditCluster.
  • Debe haber al menos tres hosts físicos disponibles.

Recuerda que, si tienes una licencia de vSphere Standard, no puedes habilitar DRS de VMware.

Si no tienes habilitado DRS, o si no tienes un mínimo de tres hosts en los que se puedan programar las VM de vSphere, agrega usercluster.antiaffinitygroups.enabled: false al archivo de configuración. Por ejemplo:

usercluster:
  ...
  antiaffinitygroups:
    enabled: false

Para obtener más información, consulta las notas de la versión 1.1.0-gke.6.

lbmode

Establece lbmode en "Integrated". Por ejemplo:

lbmode: "Integrated"

stackdriver.clusterlocation

Establece stackdriver.clusterlocation en una región de Google Cloud en la que desees almacenar registros. Te recomendamos que elijas una región cercana a tu centro de datos local.

stackdriver.enablevpc

Establece stackdriver.enablevpc en true si tienes la red del clúster bajo el control de una VPC. Esto garantiza que toda la telemetría fluya a través de las direcciones IP restringidas de Google.

Campos adicionales en el archivo de configuración

El archivo de configuración de GKE On-Prem tiene varios campos además de los que se muestran en este tema. Por ejemplo, puedes usar el campo manuallbspec para configurar GKE On-Prem a fin de que se ejecute en modo de balanceo de cargas manual.

Para obtener una descripción completa de los campos del archivo de configuración, consulta Instala mediante DHCP e Instala mediante direcciones IP estáticas.

Valida el archivo de configuración

Después de modificar el archivo de configuración, ejecuta gkectl check-config a fin de verificar que el archivo sea válido y se pueda usar para la instalación:

gkectl check-config --config config.yaml

Si el comando muestra algún mensaje de FAILURE, soluciona los problemas y vuelve a validar el archivo.

Si deseas omitir las validaciones que llevan más tiempo, pasa la marca --fast. Para omitir validaciones individuales, usa las marcas --skip-validation-xxx. Para obtener más información sobre el comando check-config, consulta Ejecuta verificaciones previas.

Ejecuta gkectl prepare

Ejecuta gkectl prepare para inicializar el entorno de vSphere:

gkectl prepare --config config.yaml --skip-validation-all

Crea clústeres de administrador y de usuario

  1. Crea el clúster de administrador y de usuario mediante la ejecución del comando gkectl create cluster.

    gkectl create cluster --config config.yaml --skip-validation-all

    El comando gkectl create cluster crea archivos kubeconfig llamados [CLUSTER_NAME]-kubeconfig en el directorio actual, en los que [CLUSTER_NAME] es el nombre que estableciste para cluster. Por ejemplo: MY-CLUSTER-kubeconfig

    En la documentación de GKE On-Prem, se usan los siguientes marcadores de posición para hacer referencia a estos archivos kubeconfig:

    • Clúster de administrador: [ADMIN_CLUSTER_KUBECONFIG]
    • Clúster de usuario: [USER_CLUSTER_KUBECONFIG]
  2. Verifica que el clúster esté creado y en ejecución:

    1. Para verificar el clúster de administrador, ejecuta el siguiente comando:

      kubectl get nodes --kubeconfig [ADMIN_CLUSTER_KUBECONFIG]

      En el resultado, se muestran los nodos del clúster de administrador.

    2. Para verificar el clúster de usuario, ejecuta el siguiente comando:

      kubectl get nodes --kubeconfig [USER_CLUSTER_KUBECONFIG]

      En el resultado, se muestran los nodos del clúster de usuario. Por ejemplo:

      NAME                        STATUS   ROLES    AGE   VERSION
      xxxxxx-1234-ipam-15008527   Ready    <none>   12m   v1.14.7-gke.24
      xxxxxx-1234-ipam-1500852a   Ready    <none>   12m   v1.14.7-gke.24
      xxxxxx-1234-ipam-15008536   Ready    <none>   12m   v1.14.7-gke.24
      

Continúa con la siguiente sección para obtener información sobre cómo implementar una aplicación en el clúster de usuario.