Nota:
- Este tutorial está disponible en un entorno de laboratorio gratuito proporcionado por Oracle.
- Utiliza valores de ejemplo para las credenciales, el arrendamiento y los compartimentos de Oracle Cloud Infrastructure. Al finalizar la práctica, sustituya estos valores por valores específicos de su entorno en la nube.
Utilizar el tipo de servicio LoadBalancer en Oracle Cloud Native Environment
Introducción
El servicio LoadBalancer de Kubernetes expone el despliegue externamente mediante el equilibrador de carga de un proveedor en la nube. Los servicios NodePort y ClusterIP dependientes a los que se enruta el equilibrador de carga externo se crean automáticamente.
En este tutorial se muestra cómo desplegar el módulo Oracle Cloud Infrastructure Cloud Controller Manager (módulo oci-ccm) en Oracle Cloud Native Environment para manejar solicitudes de un tipo de servicio LoadBalancer. El módulo Gestor de controladores de Oracle Cloud Infrastructure utiliza el proyecto de código abierto oci-cloud-controller-manager, que es una implementación del Gestor de controladores en la nube de Kubernetes (o proveedor en la nube fuera de árbol) para Oracle Cloud Infrastructure (OCI).
Objetivos
- Despliegue del módulo del gestor de controladores de Oracle Cloud Infrastructure Cloud
- Crear un despliegue y un servicio LoadBalancer
- Verificar el acceso mediante el servicio LoadBalancer
Requisitos
Un sistema Oracle Linux 8 o posterior con la siguiente configuración:
- un usuario no raíz con privilegios
sudo - Oracle Cloud Native Environment instalada y configurada
Configuración del entorno de prácticas
Nota: Al utilizar el entorno de prácticas gratuitas, consulte Aspectos básicos de las prácticas de Oracle Linux para obtener información sobre la conexión y otras instrucciones de uso.
Información: el entorno de laboratorio gratuito despliega Oracle Cloud Native Environment en el nodo proporcionado, listo para crear entornos. Este despliegue tarda aproximadamente entre 8 y 10 minutos en completarse después del inicio. Por lo tanto, es posible que desee alejarse mientras se ejecuta y, a continuación, volver a completar el laboratorio.
-
Si aún no está conectado, abra un terminal y conéctese mediante ssh al sistema ocne-node01.
ssh oracle@<ip_address_of_ol_node> -
Confirme que el entorno está listo.
kubectl get pods -AResultado de ejemplo:
[oracle@ocne-node01 ~]$ kubectl get pods -A NAMESPACE NAME READY STATUS RESTARTS AGE externalip-validation-system externalip-validation-webhook-7988bff847-8ws2v 1/1 Running 0 3m18s kube-system coredns-7cbc77dbc7-qxqth 1/1 Running 0 3m18s kube-system coredns-7cbc77dbc7-r9bgj 1/1 Running 0 3m18s kube-system etcd-ocne-node01 1/1 Running 0 3m37s kube-system kube-apiserver-ocne-node01 1/1 Running 0 3m37s kube-system kube-controller-manager-ocne-node01 1/1 Running 0 3m37s kube-system kube-flannel-ds-vcwzn 1/1 Running 0 3m18s kube-system kube-proxy-7lx59 1/1 Running 0 3m18s kube-system kube-scheduler-ocne-node01 1/1 Running 0 3m37s kubernetes-dashboard kubernetes-dashboard-5d5d4947b5-7pffh 1/1 Running 0 3m18s
Despliegue del módulo del gestor de controladores de Oracle Cloud Infrastructure Cloud
-
Agregue los módulos
helmyoci-ccmal archivo de configuración existente.tee -a ~/myenvironment.yaml > /dev/null << 'EOF' - module: helm name: myhelm args: helm-kubernetes-module: mycluster - module: oci-ccm name: myoci oci-ccm-helm-module: myhelm oci-use-instance-principals: true oci-compartment: oci-vcn: oci-lb-subnet1: EOFEl entorno de prácticas gratuitas utiliza políticas para permitir el uso de principales de instancias, que permiten que las instancias sean actores (o principales) autorizados para realizar acciones en recursos de servicio.
El módulo Oracle Cloud Infrastructure Cloud Controller Manager utiliza la opción
oci-use-instance-principals: falsepara la autenticación como configuración por defecto.Para obtener más información, consulte la documentación sobre uso del equilibrador de carga de Oracle Cloud Infrastructure sobre cómo transferir información de credenciales relacionada con su arrendamiento de Oracle Cloud Infrastructure en lugar de utilizar principales de instancia.
-
Agregue los OCID necesarios dentro del archivo de configuración.
-
Cambie de Terminal a Free Lab Desktop.
-
Abra la página de detalles del Luna Lab mediante el icono Luna Lab del escritorio de laboratorio gratuito.
-
Haga clic en el separador Oracle Cloud.

-
Desplácese hacia abajo y busque el OCID de compartimento y cópielo.

-
Cambie al terminal abierto anterior.
-
Abra el archivo de configuración con el editor de texto que desee. Aquí utilizaremos
vi.vi ~/myenvironment.yaml -
Introduzca el modo de inserción
viescribiendoi. -
Agregue el OCID de compartimento al final de la línea oci-compartment:.
Nota: Dado que es YAML, recuerde agregar un espacio antes de pegar el valor.
Ejemplo:
- module: oci-ccm name: myoci oci-ccm-helm-module: myhelm oci-use-instance-principals: true oci-compartment: ocid1.compartment.oc1..aaaaaaaamqicnhi7e6dj7fwtbiibfxxlzjpd3uf33f7a33gftzgpchrnuzna oci-vcn: oci-lb-subnet1: -
Cambie a la página de detalles del Luna Lab y haga clic en el separador Recursos.

-
Busque vcn_ocid y cópielo.

-
Vuelva al terminal.
-
Agregue vcn_ocid al final de la línea oci-vcn:.
Nota: Dado que es YAML, recuerde agregar un espacio antes de pegar el valor.
Ejemplo:
- module: oci-ccm name: myoci oci-ccm-helm-module: myhelm oci-use-instance-principals: true oci-compartment: ocid1.compartment.oc1..aaaaaaaamqicnhi7e6dj7fwtbiibfxxlzjpd3uf33f7a33gftzgpchrnuzna oci-vcn: ocid1.vcn.oc1.eu-frankfurt-1.amaaaaaar5cqh7qam56nztotyx4xzhovuo7stl5dddlmdmubdcdam64sadka oci-lb-subnet1: -
Vuelva a la página de detalles del Luna Lab.
-
Busque vcn_subnet_ocid y cópielo.

-
Vuelva al terminal.
-
Agregue vcn_subnet_ocid al final de la línea oci-lb-subnet1:.
Nota: Dado que es YAML, recuerde agregar un espacio antes de pegar el valor.
Ejemplo:
- module: oci-ccm name: myoci oci-ccm-helm-module: myhelm oci-use-instance-principals: true oci-compartment: ocid1.compartment.oc1..aaaaaaaamqicnhi7e6dj7fwtbiibfxxlzjpd3uf33f7a33gftzgpchrnuzna oci-vcn: ocid1.vcn.oc1.eu-frankfurt-1.amaaaaaar5cqh7qam56nztotyx4xzhovuo7stl5dddlmdmubdcdam64sadka oci-lb-subnet1: ocid1.subnet.oc1.eu-frankfurt-1.aaaaaaaazq3yaeofyv3azmnzm2cxrilnfhpmvhark7xw5u6eo3574mtbzswa -
Guarde y cierre el archivo. Si utiliza
vi, puede hacerlo escribiendoESC,:wq!yENTER.
IMPORTANTE: asegúrese de que los OCID son correctos para su entorno. Si los valores son incorrectos, los módulos
oci-ccmse instalan, pero no podrán crear LoadBalancer cuando lo solicite el servicio. -
-
Crear e instalar módulos.
olcnectl module create --config-file myenvironment.yaml olcnectl module validate --config-file myenvironment.yaml olcnectl module install --config-file myenvironment.yaml
Crear Despliegue y Servicio
-
Genere el archivo de configuración para el despliegue y el servicio.
tee echo-oci-lb.yml > /dev/null << 'EOF' --- apiVersion: apps/v1 kind: Deployment metadata: name: echo-deployment labels: app: echo1 spec: replicas: 2 selector: matchLabels: app: echo1 template: metadata: labels: app: echo1 spec: containers: - name: echoserver image: k8s.gcr.io/echoserver:1.4 ports: - containerPort: 80 --- kind: Service apiVersion: v1 metadata: name: echo-lb-service annotations: service.beta.kubernetes.io/oci-load-balancer-security-list-management-mode: "None" service.beta.kubernetes.io/oci-load-balancer-internal: "true" service.beta.kubernetes.io/oci-load-balancer-shape: "10Mbps" spec: selector: app: echo1 type: LoadBalancer ports: - name: http port: 80 targetPort: 8080 EOF -
Crear despliegue y servicio.
kubectl create -f echo-oci-lb.yml
Verificación de la creación del despliegue y el servicio
-
Obtener despliegue
kubectl get deploymentResultado de ejemplo:
NAME READY UP-TO-DATE AVAILABLE AGE echo-deployment 2/2 2 2 15s -
Obtener servicio
kubectl get serviceResultado de ejemplo:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE echo-lb-service LoadBalancer 10.108.35.18 <pending> 80:32162/TCP 23s kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 13mEl elemento 'pending' en EXTERNAL-IP para echo-lb-service existe hasta que el módulo Oracle Cloud Infrastructure Cloud Controller Manager crea e inicia OCI LoadBalancer.
Repita la ejecución del comando
kubectl get servicehasta que la salida muestre la dirección EXTERNAL-IP. Debe aparecer dentro de 1-2 minutos, máximo.Los PORTS indican el puerto de recepción LoadBalancer de OCI (80) y el puerto de servicio secundario NodePort de Kubernetes generado automáticamente.
-
Obtener puntos finales
kubectl get endpointsResultado de ejemplo:
NAME ENDPOINTS AGE echo-lb-service 10.244.0.7:8080,10.244.0.8:8080 5m37s kubernetes 10.0.0.140:6443 18mUn punto final es un recurso al que hace referencia un servicio de Kubernetes. El recurso realiza un seguimiento de las direcciones IP y los puertos de uno o más pods asignados dinámicamente durante la creación del servicio.
Verificar aplicación
Con un tipo de servicio LoadBalancer, la dirección IP y el puerto que se van a probar son la dirección IP EXTERNAL y el puerto del servicio, que es el listener LoadBalancer de OCI. La solicitud se envía al backend LoadBalancer de OCI. El backend LoadBalancer de OCI enruta el tráfico al servicio NodePort secundario que se ejecuta en el nodo específico y, a continuación, al Pod.
-
Utilice JSONPath para asignar al listener LoadBalancer una variable
LB=$(kubectl get svc -o jsonpath="{.status.loadBalancer.ingress[0].ip}" echo-lb-service) -
Utilice JSONPath para asignar una variable al puerto LoadBalancer
LBPORT=$(kubectl get svc -o jsonpath="{.spec.ports[0].port}" echo-lb-service) -
Pruebe la aplicación.
curl -i -w "\n" $LB:$LBPORTResultado de ejemplo:
[oracle@ocne-node01 ~]$ curl -i -w "\n" $LB:$LBPORT HTTP/1.1 200 OK Server: nginx/1.10.0 Date: Wed, 06 Jul 2022 16:41:23 GMT Content-Type: text/plain Transfer-Encoding: chunked Connection: keep-alive CLIENT VALUES: client_address=10.244.0.1 command=GET real path=/ query=nil request_version=1.1 request_uri=http://10.0.0.138:8080/ SERVER VALUES: server_version=nginx: 1.10.0 - lua: 10001 HEADERS RECEIVED: accept=*/* host=10.0.0.138 user-agent=curl/7.61.1 BODY: -no body in request-client_address que se muestra en la salida es la dirección IP de la puerta de enlace asociada con la interfaz cni0. La interfaz cni0 gestiona la red de cluster de Kubernetes como se trata en la documentación ascendente de Plugins de red.
Resumen
Ahora entendemos cómo crear un servicio LoadBalancer en Kubernetes. Desproteja y explique automáticamente funciones adicionales de Oracle Cloud Native Environment mediante el módulo Oracle Cloud Infrastructure Cloud Controller Manager y las anotaciones de equilibrador de carga disponibles.
Para obtener más información
- Oracle Learning Library
- Documentación de Oracle Linux
- Documentación de Oracle Cloud Native Environment
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 y conviértase en Oracle Learning Explorer.
Para obtener documentación sobre el producto, visite Oracle Help Center.
Use LoadBalancer Service Type on Oracle Cloud Native Environment
F60139-01
July 2022
Copyright © 2022, Oracle and/or its affiliates.