Note:
- Este tutorial requiere acceso a Oracle Cloud. Para registrarse en una cuenta gratuita, consulte Introducción a la cuenta gratuita de Oracle Cloud Infrastructure.
- Utiliza valores de ejemplo para credenciales, arrendamiento y compartimentos de Oracle Cloud Infrastructure. Al finalizar el laboratorio, sustituya estos valores por otros específicos de su entorno en la nube.
Configurar Oracle Cloud Infrastructure Container Engine for Kubernetes con tres nodos de trabajador
Introducción
En este tutorial, explicaremos cómo configurar un cluster de Kubernetes que conste del plano de control de Kubernetes y el plano de datos (agrupación de nodos) mediante Oracle Cloud Infrastructure Container Engine for Kubernetes (OKE). También desplegaremos y eliminaremos dos aplicaciones de ejemplo en la plataforma Kubernetes para demostrar que funciona. Este tutorial sentará las bases para futuros tutoriales que se sumergirán en los servicios de red que se ofrecen dentro de Kubernetes para aplicaciones alojadas en contenedores.


Los modelos de despliegue de OKE de ejemplo son:
-
Ejemplo 1: Cluster con punto final de API de Kubernetes público, nodos de trabajador privados y equilibradores de carga públicos Flannel CNI.
-
Ejemplo 2: Cluster con punto final de API de Kubernetes privado, nodos de trabajador privados y equilibradores de carga públicos Flannel.
-
Ejemplo 3: Cluster con punto final de API de OCI CNI, puntos finales de API de Kubernetes públicos, nodos de trabajador privados y equilibradores de carga públicos
-
Ejemplo 4: Cluster con punto final de API de OCI CNI, punto final de API de Kubernetes privado, nodos de trabajador privados y equilibradores de carga públicos
Para obtener más información sobre los diferentes modelos de despliegue de OKE que podemos elegir, consulte Configuraciones de recursos de red de ejemplo.
En este tutorial, implantaremos el modelo de despliegue del ejemplo 3.
Objetivos
- Desplegaremos un cluster de control de Kubernetes y nodos de trabajador que están totalmente desplegados y configurados dentro de Oracle Cloud Infrastructure (OCI). Esto es lo que denominamos Oracle Cloud Infrastructure Container Engine for Kubernetes (OKE). Desplegaremos dos aplicaciones de ejemplo en dos espacios de nombres diferentes en los que una aplicación se desplegará mediante un gráfico de Helm en un nuevo espacio de nombres. Al final, limpiaremos las aplicaciones o pods. No desplegaremos ningún servicio de red para aplicaciones o pods operados por Kubernetes.
Tarea 1: Creación de un nuevo cluster de Kubernetes y verificación de los componentes
-
Haz clic en el menú de hamburguesa.

- Haga clic en Servicios para desarrolladores.
- Haga clic en Cluster de Kubernetes (OKE).

-
Haga clic en Crear cluster.

- Seleccione Creación rápida.
- Haga clic en Ejecutar.

-
En la página Crear cluster (rápido), introduzca la siguiente información.
- Introduzca un nombre de cluster.
- Seleccione un compartimento.
- Seleccione la versión de Kubernetes.
- Seleccione el punto final de API de Kubernetes para que sea un punto final público.
- Seleccione el tipo de nodo que se va a gestionar.
- Desplazar hacia abajo.

- Seleccione los nodos de trabajador de Kubernetes para que sean trabajadores privados.
- Desplazar hacia abajo.

- Mantenga el valor por defecto 3 de recuento de nodos (nodos de trabajador)3.
- Haga clic en Siguiente.

- Revise los parámetros del clúster.
- Desplazar hacia abajo.

- Revise los parámetros de los pools de nodos.
- Desplazar hacia abajo.

- No seleccione la casilla de control Crear un cluster básico.
- Haga clic en Create cluster.

-
Revise el estado de los diferentes componentes que se crean.

- Asegúrate de que todo tenga un cheque verde.
- Haga clic en Cerrar.

- Revise que el estado sea CREATING.
- Desplazar hacia abajo.

-
Revise el estado de creación del cluster y el pool de nodos. Se está creando el cluster de control de Kubernetes y el pool de nodos de trabajador se creará más tarde.

-
Tras unos minutos, el cluster de control de Kubernetes se ha creado correctamente.

-
Ahora se creará el pool de nodos de trabajador.

-
Tras unos minutos, el pool de nodos de trabajador se crea correctamente.

- Haga clic en Pools de nodos.
- Observe que los nodos de trabajador del pool se siguen creando.
- Haga clic en 3 de nodos de trabajador.

-
Observe que todos los nodos tienen el estado Not ready.

-
Después de unos minutos, estarán listas.

El cluster de control de Kubernetes y los nodos de trabajador están completamente desplegados y configurados dentro de Oracle Cloud Infrastructure (OCI). Esto es lo que llamamos Oracle Cloud Infrastructure Container Engine for Kubernetes.
Tarea 2: Verificación de los componentes desplegados del cluster de Kubernetes en la consola de OCI
Cuando utilizamos OKE para crear un cluster de Kubernetes, se crearán algunos recursos dentro de OCI para soportar este despliegue.
El primer recurso y el más importante es la red virtual en la nube (VCN). Debido a que hemos seleccionado la opción Creación rápida, se ha creado una nueva VCN dedicada a OKE.
-
Conéctese a la consola de OCI y vaya a Networking, Virtual Cloud Networks (VCN), verá la nueva VCN creada. Haga clic en la VCN.

Dentro de la VCN, verá tres subredes, una privada y dos públicas para soportar el despliegue de OKE.

-
Verifique los recursos.
- Haga clic en Prefijos/bloques de CIDR para revisar el CIDR de la VCN.
- Observe que OCI asignó
10.0.0.0/16.

- Haga clic en Tablas de rutas para revisar las tablas de enrutamiento.
- Tenga en cuenta que se han creado dos tablas de direccionamiento: direccionar a subredes privadas y direccionar a subredes públicas.

- Haga clic en Gateways de Internet para revisar el gateway de Internet que proporcionará conectividad a Internet mediante las subredes públicas hacia y desde Internet.
- Observe que solo hay un gateway de Internet.

- Haga clic en Listas de seguridad para revisar las listas de seguridad que pueden ser reglas de entrada o de salida para proteger la conectividad entre las subredes.
- Tenga en cuenta que hay tres listas de seguridad, una utilizada para la protección de conectividad de nodos de trabajador de Kubernetes, la segunda para la protección de puntos finales de API de Kubernetes y la tercera para la protección de servicios de Kubernetes.

- Haga clic en Gateways de NAT para revisar el gateway de NAT que proporcionará conectividad a Internet mediante las subredes privadas a Internet.
- Observe que solo hay un gateway de NAT.

- Haga clic en Gateways de servicio para revisar el gateway de servicio que proporcionará acceso privado a servicios específicos de Oracle, sin exponer los datos a un gateway de Internet o NAT.
- Observe que solo hay un gateway de servicio.

- Abra la consola de OCI, haga clic en el menú de hamburguesa y vaya a Recursos informáticos, Instancias.
- Tenga en cuenta que se crearán tres instancias que se utilizarán como los tres nodos de trabajador de Kubernetes que hemos especificado durante el despliegue.

- Abra la consola de OCI, haga clic en el menú de hamburguesa y vaya a IP Management, IP públicas reservadas.
- Tenga en cuenta que hay una dirección IP pública que termina con
.166, reservada para el punto final de API pública de Kubernetes.

Si colocamos cada pieza de información que acabamos de recopilar y colocamos que en un diagrama entonces el diagrama se verá como se muestra en la siguiente imagen.

-
Tablas con detalles de configuración para desplegar OKE
-
VCN:
Recurso Nombre VCN • Nombre: OKE-vcn-quick-IH-OKE-CLUSTER-af593850a
• Bloque CIDR: 10.0.0.0/16
• Resolución de DNS: SeleccionadoGateway de Internet • Nombre: OKE-igw-quick-IH-OKE-CLUSTER-af593850a Gateway de NAT • Nombre: OKE-ngw-quick-IH-OKE-CLUSTER-af593850a Gateway de servicio • Nombre: OKE-sgw-quick-IH-OKE-CLUSTER-af593850a
• Servicios: todos los servicios de la región en Oracle Services NetworkOpciones de DHCP • Tipo de DNS definido en Internet y solucionador de VCN -
Subredes:
Recurso Ejemplo Subred pública para el punto final de API de Kubernetes Objetivo: Punto final de API de Kubernetes con las siguientes propiedades:
• Tipo: Regional
• Bloque de CIDR: 10.0.0.0/28
• Tabla de rutas: OKE-public-routetable-IH-OKE-CLUSTER-af593850a
• Acceso a subred: público
• Resolución de DNS: seleccionado
• Opciones de DHCP: por defecto
• Lista de seguridad: OKE-k8sApiEndpoint-quick-IH-OKE-CLUSTER-af593850aSubred privada para nodos de trabajador Objetivo: nodos de trabajador con las siguientes propiedades:
• Tipo: Regional
• Bloque de CIDR: 10.0.10.0/24
• Tabla de rutas: N/A
• Acceso a subred: Privado
• Resolución de DNS: Seleccionado
• Opciones de DHCP: Predeterminado
• Lista de seguridad: OKE-nodeseclist-quick-IH-OKE-CLUSTER-af593850aSubred privada para pods Objetivo: pods con las siguientes propiedades:
• Tipo: Regional
• Bloque de CIDR: 10.96.0.0/16
• Tabla de rutas: OKE-private-routetable-IH-OKE-CLUSTER-af593850a
• Acceso a subred: Privado
• Resolución de DNS: Seleccionado
• Opciones de DHCP: Por defecto
• Lista de seguridad: N/ASubred pública para equilibradores de carga de servicio Objetivo: Equilibradores de carga con las siguientes propiedades:
• Tipo: Regional
• Bloque de CIDR: 10.0.20.0/24
• Tabla de rutas: OKE-private-routetable-IH-OKE-CLUSTER-af593850a
• Acceso a subred: Público
• Resolución de DNS: Seleccionado
• Opciones de DHCP: Por defecto
• Lista de seguridad: OKE-svclbseclist-quick-IH-OKE-CLUSTER-af593850a -
Tablas de rutas:
Recurso Ejemplo Tabla de rutas para subred de punto final de API de Kubernetes pública Objetivo: punto final de API de Kubernetes direccionable, con una regla de ruta definida como sigue:
• Bloque de CIDR de destino: 0.0.0.0/0
• Tipo de destino: gateway de Internet
• Destino: OKE-igw-quick-IH-OKE-CLUSTER-af593850aTabla de rutas para subred de pods privados Finalidad: routetable-pods, con dos reglas de ruta definidas de la siguiente manera:
• Regla para el tráfico a Internet:
◦ Bloque de CIDR de destino: 0.0.0.0/0
◦ Tipo de destino: gateway de NAT
◦ Destino: OKE-ngw-quick-IH-OKE-CLUSTER-af593850a
• Regla para el tráfico a los servicios de OCI:
◦ Destino: Todos los servicios de la región en Oracle Services Network
◦ Tipo de destino: gateway de servicio
◦ Destino: OKE-sgw-quick-IH-OKE-CLUSTER-af593850aTabla de rutas para subred de equilibradores de carga pública Objetivo: routetable-serviceloadbalancers, con una regla de ruta definida como la siguiente:
• Bloque CIDR de destino: 0.0.0.0/0
• Tipo de destino: gateway de Internet
• Destino: OKE-igw-quick-IH-OKE-CLUSTER-af593850a
-
-
Reglas de lista de seguridad para subred de punto final de API de Kubernetes pública
La lista de seguridad
oke-k8sApiEndpoint-quick-IH-OKE-CLUSTER-af593850atiene las reglas de entrada y salida como se muestra en las siguientes tablas.-
Reglas de entrada:
Sin Estado Origen Protocolo IP Rango de puertos de origen Rango de puertos de destino Tipo y código Permite Descripción N.º 0.0.0.0/0 TCP Todas 6.443 Tráfico TCP para puertos: 6443 Acceso externo al punto final del API de Kubernetes N.º 10.0.10.0/24 TCP Todas 6.443 Tráfico TCP para puertos: 6443 Comunicación del trabajador de Kubernetes al punto final Kubernetes API N.º 10.0.10.0/24 TCP Todas 12.250 Tráfico TCP para puertos: 12250 El trabajador de Kubernetes controla la comunicación de plano N.º 10.0.10.0/24 ICMP 3, 4 Tráfico ICMP para: 3, 4 Destino no accesible: se necesita fragmentación y se había definido no fragmentar Detección de rutas -
Reglas de salida:
Sin Estado Destino Protocolo IP Rango de puertos de origen Rango de puertos de destino Tipo y código Permite Descripción N.º Todos los servicios de AMS en Oracle Services Network TCP Todas 443 Tráfico TCP para puertos: HTTPS 443 Permitir que el Plano de Control de Kubernetes se comunique con OKE N.º 10.0.10.0/24 TCP Todas Todas Tráfico TCP para puertos: Todo Todo el tráfico a nodos del trabajador N.º 10.0.10.0/24 ICMP 3, 4 Tráfico ICMP para: 3, 4 Destino no accesible: se necesita fragmentación y se había definido no fragmentar Detección de rutas
-
-
Reglas de lista de seguridad para subred de nodos de trabajador privada
La lista de seguridad
oke-nodeseclist-quick-IH-OKE-CLUSTER-af593850atiene las reglas de entrada y salida como se muestra en las siguientes tablas.Reglas de entrada:
Sin Estado Origen Protocolo IP Rango de puertos de origen Rango de puertos de destino Tipo y código Permite Descripción N.º 10.0.10.0/24 Todos los protocolos Todo el tráfico para todos los puertos Permitir que los pods en un nodo del trabajador se comuniquen con los pods en otros nodos del trabajador N.º 10.0.0.0/28 ICMP 3, 4 Tráfico ICMP para: 3, 4 Destino no accesible: se necesita fragmentación y se había definido no fragmentar Detección de rutas N.º 10.0.0.0/28 TCP Todas Todas Tráfico TCP para puertos: Todo Acceso TCP desde el plano de control de Kubernetes N.º 0.0.0.0/0 TCP Todas 22 Tráfico TCP para puertos: protocolo de conexión remota SSH 22 Tráfico SSH de entrada a nodos de trabajador N.º 10.0.20.0/24 TCP Todas 32.291 Tráfico TCP para puertos: 32291 N.º 10.0.20.0/24 TCP Todas 10.256 Tráfico TCP para puertos: 10256 N.º 10.0.20.0/24 TCP Todas 31.265 Tráfico TCP para puertos: 31265 Reglas de salida:
Sin Estado Destino Protocolo IP Rango de puertos de origen Rango de puertos de destino Tipo y código Permite Descripción N.º 10.0.10.0/24 Todos los protocolos Todo el tráfico para todos los puertos Permitir que los pods en un nodo del trabajador se comuniquen con los pods en otros nodos del trabajador N.º 10.0.0.0/28 TCP Todas 6.443 Tráfico TCP para puertos: 6443 Acceso a punto final de API deKubernetes N.º 10.0.0.0/28 TCP Todas 12.250 Tráfico TCP para puertos: 12250 El trabajador de Kubernetes controla la comunicación de plano N.º 10.0.0.0/28 ICMP 3, 4 Tráfico ICMP para: 3, 4 Destino no accesible: se necesita fragmentación y se había definido no fragmentar Detección de rutas N.º Todos los servicios de AMS en Oracle Services Network TCP Todas 443 Tráfico TCP para puertos: HTTPS 443 Permitir que los nodos se comuniquen con OKE para garantizar el inicio correcto y el funcionamiento continuo N.º 0.0.0.0/0 ICMP 3, 4 Tráfico ICMP para: 3, 4 Destino no accesible: se necesita fragmentación y se había definido no fragmentar Acceso a ICMP desde el plano de control de Kubernetes N.º 0.0.0.0/0 Todos los protocolos Todo el tráfico para todos los puertos Los nodos de trabajador acceden a Internet -
Reglas de lista de seguridad para subred de equilibrador de carga pública
La lista de seguridad
oke-svclbseclist-quick-IH-OKE-CLUSTER-af593850atiene las reglas de entrada y salida como se muestra en las siguientes tablas.-
Reglas de entrada:
Sin Estado Origen Protocolo IP Rango de puertos de origen Rango de puertos de destino Tipo y código Permite Descripción N.º 0.0.0.0/0 TCP Todas 80 Tráfico TCP para puertos: 80 -
Reglas de salida:
Sin Estado Destino Protocolo IP Rango de puertos de origen Rango de puertos de destino Tipo y código Permite Descripción N.º 10.0.10.0/24 TCP Todas 32.291 Tráfico TCP para puertos: 32291 N.º 10.0.10.0/24 TCP Todas 10.256 Tráfico TCP para puertos: 10256 N.º 10.0.10.0/24 TCP Todas 31.265 Tráfico TCP para puertos: 31265
-
Tarea 3: Verificación de la ejecución del cluster de Kubernetes mediante la CLI
-
Abra la consola de OCI, haga clic en el menú de hamburguesa y vaya a Developer Services, Kubernetes Clusters (OKE). Haga clic en el cluster de Kubernetes creado en la tarea 1.

- Desplazar hacia abajo.
- Haga clic en Inicio rápido.

-
Haga clic en Acceder al cluster.

- Seleccione Acceso a Cloud Shell.
- Haga clic en Copiar para copiar el comando y permitir el acceso al cluster de Kubernetes.
- Haga clic en Iniciar Cloud Shell.

En el siguiente diagrama se muestra cómo se realizará la conexión para realizar la gestión en el cluster de OKE mediante OCI Cloud Shell.

-
Se iniciará OCI Cloud Shell.

Se mostrarán algunos mensajes informativos sobre lo que está sucediendo en segundo plano.

En este caso, es posible permitir que OCI Cloud Shell se ejecute en diferentes arquitecturas de CPU.
-
Haga clic en Cerrar para cerrar este mensaje informativo.

-
Estamos listos para utilizar OCI Cloud Shell para acceder al cluster de Kubernetes.

-
Pegue el comando que se copió anteriormente en esta tarea.

-
Ejecute el siguiente comando para obtener información sobre el cluster de Kubernetes.
kubectl cluster-info
-
Ejecute el siguiente comando para obtener información sobre los nodos de trabajador.
kubectl get nodes
-
Ejecute el siguiente comando para obtener más información sobre los nodos de trabajador.
kubectl get nodes -o wide
-
Ejecute el siguiente comando para borrar la pantalla y comenzar con una nueva pantalla.
clear
- Observe que la salida anterior se ha borrado, pero que aún se puede acceder al desplazarse hacia arriba.
- Haga clic en el icono Minimizar para minimizar la ventana de OCI Cloud Shell.

-
Haga clic en Cerrar para cerrar la ventana Acceder al cluster.

La conexión se realiza para realizar la gestión en el cluster de OKE mediante OCI Cloud Shell.

Tarea 4: Despliegue de una aplicación de Nginx de ejemplo mediante kubectl
-
Ejecute los siguientes comandos.
- Anote el comando para obtener la versión de Kubernetes.
- Anote el comando para desplegar una aplicación de ejemplo.
- Haga clic en Restaurar para restaurar la ventana de OCI Cloud Shell.

-
Ejecute el siguiente comando para obtener la versión de Kubernetes.
kubectl version
-
Ejecute el siguiente comando para verificar los pods o las aplicaciones actuales desplegados.
kubectl get podsObserve que no se han encontrado recursos.

-
Ejecute el siguiente comando para desplegar una nueva aplicación de ejemplo.
kubectl create -f https://k8s.io/examples/application/deployment.yaml
-
Ejecute el siguiente comando para verificar los pods o las aplicaciones actuales desplegados.
kubectl get pods -
Observe que hay pods en el estado RUNNING. Esto significa que la aplicación que acabamos de desplegar se está ejecutando.

-
Ejecute el siguiente comando para obtener las direcciones IP para acceder a la aplicación.
kubectl get deploy,svc -
Tenga en cuenta que la aplicación recién desplegada no tiene ninguna dirección IP asignada y que solo el cluster de Kubernetes tiene un servicio de IP de cluster asociado a ella con una dirección IP interna.

-
Ejecute el siguiente comando para ver específicamente los servicios conectados (de red) para la aplicación recién desplegada.
kubectl get svc ngnix -
Tenga en cuenta que no hay servicios (de red) desplegados o asociados para la aplicación Nginx desplegada. Por este motivo, no podremos acceder a la aplicación desde otra aplicación ni utilizar el navegador web para acceder a la página web en el servidor web de Nginx. Hablaremos de esto en otro tutorial.

Tarea 5: Despliegue de una aplicación MySQL de ejemplo mediante el gráfico de Helm
-
Un gráfico de Helm es un paquete que contiene todos los recursos necesarios para desplegar una aplicación en un cluster de Kubernetes. Ejecute los siguientes comandos para:
-
Agregue el repositorio de Bitnami para la base de datos MySQL.
helm repo add bitnami https://charts.bitnami.com/bitnami -
Despliegue una base de datos MySQL en los nodos de trabajador de Kubernetes y cree también un nuevo mysql de espacio de nombres.
helm install mysql bitnami/mysql -–namespace mysql --create-namespace

-
-
Para obtener las aplicaciones desplegadas, ejecute el siguiente comando. Este comando sólo mostrará las aplicaciones desplegadas en el espacio de nombres actual (por defecto).
kubectl get pods -
Observe que sólo aparece la aplicación Nginx en el espacio de nombres actual (por defecto). Este comando ahora mostrará las aplicaciones desplegadas en todo el cluster (todos los espacios de nombres).
kubectl get pods -A -w- Observe que la aplicación Nginx se está ejecutando en el espacio de nombres por defecto.
- Observe que la aplicación MySQL se está ejecutando en el nuevo espacio de nombres mysql.

Tarea 6: Limpieza de los pods y espacios de nombres
Hemos desplegado una aplicación en el espacio de nombres por defecto (Nginx) y otra aplicación en un nuevo espacio de nombres (MySQL). Usando gráficos de Helm, vamos a limpiar el entorno para que podamos empezar de nuevo cuando lo necesitemos.
-
Utilice el siguiente comando para obtener todos los nodos de trabajador (de todo el cluster).
kubectl get nodes -o wide -
Utilice el siguiente comando para obtener todos los pods en ejecución en el espacio de nombres actual (por defecto).
kubectl get pods -o wide -
Ejecute el siguiente comando para obtener todos los espacios de nombres.
kubectl get namespaces -
Ejecute el siguiente comando para obtener todos los pods en ejecución en el espacio de nombres actual (por defecto) específicamente.
kubectl get pods --namespace=default -
Ejecute el siguiente comando para obtener todos los pods en ejecución en el espacio de nombres MySQL específicamente.
kubectl get pods --namespace=mysql



-
Ejecute el siguiente comando para suprimir todos los despliegues o pods del espacio de nombres por defecto.
kubectl delete --all deployments --namespace=default -
Utilice el siguiente comando para verificar si se suprimen los despliegues o los pods.
kubectl get pods --namespace=default -
Utilice el siguiente comando para obtener todos los pods en ejecución en el espacio de nombres MySQL específicamente. Solo verifique si esto todavía existe.
kubectl get pods --namespace=mysql

-
Ejecute el siguiente comando para suprimir todos los despliegues o pods y el espacio de nombres MySQL completo.
kubectl delete namespace mysql -
Utilice este comando para recopilar todos los espacios de nombres y verificar si se ha suprimido el espacio de nombres MySQL.
kubectl get namespaces

Acuses de recibo
- Autor: Iwan Hoogendoorn (especialista en redes OCI)
Más recursos de aprendizaje
Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de aprendizaje gratuito en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en un explorador de Oracle Learning.
Para obtener documentación sobre el producto, visite Oracle Help Center.
Set up Oracle Cloud Infrastructure Container Engine for Kubernetes with Three Worker Nodes
F95671-02