Obtener información sobre el aprovisionamiento de un cluster de Kubernetes de ARM en OCI y el despliegue de un sitio web de Nginx

Puede aprovisionar un cluster de Kubernetes de ARM en OCI y, a continuación, desplegar un sitio web de Nginx de forma manual o automática mediante un script de Terraform. Una vez desplegado, probar el sitio web es una cuestión sencilla de iniciarlo en su navegador local.

Aprovisionamiento manual de un cluster de OKE con una agrupación de ARM

Puede aprovisionar fácilmente un cluster de Kubernetes, crear un juego de pools heterogéneos en OCI y, a continuación, desplegar un sitio web de Nginx desde la consola de OCI. Este enfoque es útil si no está familiarizado con la automatización de la infraestructura y desea utilizar la consola en su lugar.

Desde la consola de OCI, realice lo siguiente:
  1. En primer lugar, aprovisione el cluster de OKE:
    1. En la sección Servicios de desarrolladores, seleccione Clusters de Kubernetes (OKE).

      Aparece la página Crear cluster.

    2. Seleccione Creación rápida para aprovisionar la infraestructura de cluster de Kubernetes necesaria de forma rápida y segura.

      Aparece la página Creación rápida.

    3. Seleccione la unidad ARM (VM.Standard.A1.Flex) para los nodos de trabajador. Esta unidad le permite configurar tanto el número de OCPU como la cantidad de memoria asignada, lo que le permite ajustar los recursos (y el precio de forma proporcional) para que se ajusten a sus requisitos específicos.

      Nota:

      Si está creando este clúster para un sitio web de alta disponibilidad (HA), mantenga los recursos al mínimo. Si es necesario, puede ampliar el número de nodos más adelante.
    4. Una vez aprovisionado el cluster, puede agregar pools adicionales con máquinas de especialidad que, a su vez, puede enlazar a imágenes específicas en el archivo de despliegue; por ejemplo, puede configurar un pool de nodos respaldados por GPU para las tareas de aprendizaje automático realizadas por el sitio web (por ejemplo, recomendación de contenido o backend de reconocimiento facial).

      Para agregar pools de nodos adicionales, simplemente actualice la unidad de la sección Pool de nodos en la página de detalles del cluster:

      1. Ir al menú Recursos.
      2. Haga clic en Pools de nodos y, a continuación, en Agregar nuevo pool.
      3. Modifique el pool según sea necesario agregando o cambiando las unidades de nodo.
  2. Ahora, utilice un archivo de despliegue para acceder al cluster e iniciar el despliegue del entorno de Nginx:
    1. Navegue al cluster y haga clic en Acceder al cluster.

      Aparece la pantalla de acceso rápido. Siga los pasos 1 y 2 (como se indica en la pantalla) para continuar. Si utiliza el acceso al shell en la nube, no necesita configurar el entorno de kubectl en su máquina. Este proceso inicia un emulador de terminal web y lo configura para su entorno. Como se indica en el paso 2 de la pantalla, pegar el comando de la CLI de OCI proporcionado allí configurará kubectl para acceder a su nuevo cluster.

    2. A continuación, verifique que los pods se han aprovisionado; introduzca:

      Nota:

      Para mayor comodidad con todos los comandos de este manual, puede hacer clic en Copiar en el ejemplo y pegar el comando directamente en el indicador.
      kubectl get nodes -o wide
      Debe ver los dos nodos y una unidad de máquina que indica que se están ejecutando en ARM; por ejemplo:
      NAME        STATUS ROLES AGE     VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE              KERNEL-VERSION                   CONTAINER-RUNTIME 
      10.0.10.129 Ready  node  3m57s   v.1.19.7  10.0.10.129   <none>        Oracle Linux Server   7.9 5.4.17-2102.el7uek.aarch64   docker://19.3.11 
      10.0.10.153 Ready  node  3m17s   v.1.19.7  10.0.10.153   <none>        Oracle Linux Server   7.9 5.4.17-2102.el7uek.aarch64   docker://19.3.11
      Si necesita ampliar el número de nodos, en la pantalla Pool de nodos, haga clic en Escalar y, en Número de nodos, introduzca el número de nodos necesario. OCI se pondrá en marcha e inscribirá para usted.
  3. Por último, despliegue el sitio web de Nginx y exposición mediante un equilibrador de carga:
    1. Despliegue un despliegue de Nginx de 2 réplicas con un servicio de recepción definido en el puerto 80; introduzca:
       kubectl apply -f https://k8s.io/examples/application/deployment.yaml 
    2. Verifique el despliegue; introduzca:
      kubectl describe deployment nginx-deployment
      Verá algo similar a lo siguiente:
      ----
      kubectl describe deployment nginx-deployment
      
      Name:                   nginx-deployment
      Namespace:              default
      CreationTimestamp:      Tue, 03 Jan 2023 17:41:27 +0000
      Labels:                 <none>
      Annotations:            deployment.kubernetes.io/revision: 1
      Selector:               app=nginx
      Replicas:               2 desired | 2 updated | 2 total | 2 available | 0 unavailable
      StrategyType:           RollingUpdate
      MinReadySeconds:        0
      RollingUpdateStrategy:  25% max unavailable, 25% max surge
      Pod Template:
        Labels:  app=nginx
        Containers:
         nginx:
          Image:        nginx:1.14.2
          Port:         80/TCP
          Host Port:    0/TCP
          Environment:  <none>
          Mounts:       <none>
        Volumes:        <none>
      Conditions:
        Type           Status  Reason
        ----           ------  ------
        Available      True    MinimumReplicasAvailable
        Progressing    True    NewReplicaSetAvailable
      OldReplicaSets:  <none>
      NewReplicaSet:   nginx-deployment-6595874d85 (2/2 replicas created)
      Events:
        Type    Reason             Age   From                   Message
        ----    ------             ----  ----                   -------
        Normal  ScalingReplicaSet  15s   deployment-controller  Scaled up replica set nginx-deployment-6595874d85 to 2
      
      ----
      
    3. Exponga el servicio a Internet a través de un equilibrador de carga; introduzca:
      kubectl expose deployment nginx-deployment --type=LoadBalancer --name=my-service 
    4. Verifique que el equilibrador de carga tiene una IP pública; introduzca:
      kubectl get services
      OCI activará el equilibrador de carga y asignará la IP pública. Después de unos instantes, debería ver algo parecido a esta salida:
      NAME        TYPE          CLUSTER-IP     EXTERNAL-IP    PORT(S)              AGE 
      kubernetes  ClusterIP     10.96.0.1      <none>         443/TCP, 12250/TCP   16m 
      nginx-lb    LoadBalancer  10.96.224.64   138.2.218.135  80:30343/TCP         3m1s

Aprovisionamiento y despliegue de un cluster de OKE con agrupación de ARM con Ampere A1

Puede aprovisionar automáticamente el cluster de OKE con un pool de ARM y, a continuación, desplegar un sitio web de Nginx mediante un script de Terraform proporcionado en GitHub. El script aprovisionará un cluster con dos nodos (en el mismo dominio de disponibilidad) en dos OCPU. El paso de configuración muestra cómo modificar el número de nodos y OCPU. A continuación, el script aprovisionará Nginx (2 pods) y lo expondrá detrás de un equilibrador de carga.
Para aprovisionar el cluster y desplegar un sitio web, utilice este procedimiento:
  1. En primer lugar, debe configurar el cluster.
    1. Asegúrese de tener un arrendamiento de OCI con un compartimento de OCI.
    2. Conéctese a la consola de OCI, abra un shell de comandos y ejecute estos comandos:
      git clone https://github.com/badr42/OKE_A1
      cd OKE_A1
      export TF_VAR_tenancy_ocid='tenancy-ocid'
      export TF_VAR_compartment_ocid='comparment-ocid'
      export TF_VAR_region='home-region'
      <optional>
      ### Select Availability Domain, zero based, if not set it defaults to 0, 
      ### this allows you to select an AD that has available A1 chips
      export TF_VAR_AD_number='0'
      
      ### Select number of nodes
      export TF_VAR_node_count='2'
      
      ### Set OCPU count per node
      export TF_VAR_ocpu_count='2'

    Utilice sus valores específicos para tenancy-ocid, comparment-ocid y home-region.

  2. Cree el cluster; introduzca:
    terraform init
    terraform plan
    terraform apply

    Después de ejecutar terraform apply, espere unos 25 minutos para el inicio del servicio.

  3. Una vez iniciado el servicio, inicie el equilibrador de carga de Nginx; introduzca:
    kubectl --kubeconfig kubeconfig get service
    Verá algo parecido a la salida del sistema:
    NAME        TYPE           CLUSTER-IP      EXTERNAL-IP      PORT(S)              AGE
    kubernetes  ClusterIP      10.96.0.1       <none>           443/TCP, 12250/TCP   16m
    nginx-lb    LoadBalancer   10.96.224.64    138.2.218.135    80:30343/TCP       3m1s
  4. Cuando haya terminado el despliegue, termine el entorno; introduzca:
    terraform destroy

Prueba del Despliegue

Para probar el despliegue, abra un explorador web e introduzca la dirección IP pública en la barra de direcciones. Si ha desplegado correctamente la página web, debería poder acceder a la nueva página de bienvenida del servidor Nginx.