Nota:

Distribuisci un load balancer esterno con Oracle Cloud Native Environment

Introduzione

Oracle Cloud Native Environment è una suite completamente integrata per lo sviluppo e la gestione di applicazioni cloud native. Il modulo Kubernetes è il modulo principale. Viene utilizzato per distribuire e gestire i container, nonché per installare e configurare automaticamente CRI-O, runC e Kata Containers. CRI-O gestisce il runtime del contenitore per un cluster Kubernetes. Il runtime può essere runC o Kata Containers.

Obiettivi

Questo tutorial/laboratorio dimostra come:

Nota di supporto: l'uso di un load balancer esterno, ad esempio IS Oracle Cloud Instructure Load Balancer, consigliato per le distribuzioni di produzione.

Prerequisiti

In questa sezione sono elencati i sistemi host per eseguire i passi di questa esercitazione. È necessario:

Configura laboratorio

Nota: quando si utilizza l'ambiente di laboratorio gratuito, vedere Oracle Linux Lab Basics per informazioni sulla connessione e altre istruzioni sull'uso.

Questo laboratorio coinvolge più sistemi, ognuno dei quali richiede diverse fasi da eseguire. Si consiglia di iniziare aprendo una finestra o una scheda del terminale e collegandosi ai seguenti nodi. In questo modo, non dovrai più accedere ed eseguire il logout. I nodi sono:

  1. Aprire un terminale e connettersi tramite ssh a ciascun nodo.

    ssh oracle@<ip_address_of_ol_node>
    

Impostare il load balancer (facoltativo)

Nota: se si utilizza l'ambiente di laboratorio gratuito, i passi presentati nella sezione non sono necessari perché la fase iniziale di distribuzione del laboratorio li ha completati. Gli utenti del laboratorio Luna devono invece procedere direttamente alla pagina successiva: Creare un file di configurazione CLI della piattaforma e continuare da lì. In caso contrario, i dettagli su come configurarli vengono forniti agli utenti che desiderano replicare questi passi nella propria tenancy di Oracle Cloud Infrastructure.

Crea un load balancer Oracle Cloud Infrastructure

  1. Eseguire il login alla console cloud.

    public_ip_address

  2. Fare clic sul menu hamburger (in alto a sinistra), quindi su Networking e Load balancer.

    public_ip_address

  3. Viene visualizzata la pagina Load balancer.

    public_ip_address

  4. Individuare il compartimento utilizzato dall'elenco a discesa.

    public_ip_address

  5. Fare clic sul pulsante Crea load balancer.

    public_ip_address

  6. Nella finestra di dialogo popup fare clic sul pulsante Crea load balancer per selezionare il tipo di load balancer predefinito.

    public_ip_address

Aggiorna dettagli load balancer

  1. Individuare la sezione predefinita Tipo di visibilità e fare clic sull'opzione Privato.

    public_ip_address

  2. Scorrere più avanti la pagina fino alla sezione Scegliere la rete.

  3. Selezionare il valore fornito nella casella di riepilogo a discesa per Visual Cloud Network e Subnet.

    Nota: i valori mostrati nell'immagine saranno diversi ogni volta che viene avviato il laboratorio.

    public_ip_address

  4. Fare clic su Avanti per spostarsi al passo successivo.

Imposta criteri e protocollo load balancer

  1. Ora impostare il protocollo per i criteri di bilanciamento del carico e il controllo dello stato.

    • Accettare il criterio di bilanciamento del carico predefinito, Weighted Round Robin
  2. Nella sezione Specificare il criterio di controllo dello stato immettere le impostazioni mostrate.

    • In Protocollo selezionare TCP
    • Modificare il valore della porta da 80 a 6443

    public_ip_address

Aggiungi nodi backend

  1. Fare clic sul pulsante Aggiungi backend per visualizzare una finestra.

    public_ip_address

  2. Selezionare i nodi riportati di seguito e fare clic sul pulsante Aggiungi backend selezionati.

    • ocne-control01
    • ocne-control02
    • ocne-control03
  3. Aggiornare la colonna Porta per ogni server backend appena selezionato dal valore predefinito 80 al valore 6443.

    public_ip_address

  4. Fare clic sul pulsante Avanti per passare alla fase successiva.

Configurare il listener del load balancer

  1. Selezionare il pulsante TCP.

  2. Modificare la porta utilizzata per il traffico di indirizzo da 443 a 6443

    I valori immessi devono avere questo aspetto.

    public_ip_address

  3. Fare clic sul pulsante Avanti.

Configurare i log del load balancer

  1. Il passaggio finale durante il processo di installazione è costituito dalle opzioni Gestisci log.

    public_ip_address

    Poiché non sono necessarie modifiche per questo scenario, fare clic sul pulsante Sottometti per creare il Load balancer.

Informazioni sui load balancer

  1. Una volta creato, viene visualizzata una pagina di panoramica per il load balancer appena creato.

    public_ip_address

    Nota: le sezioni Integral Health e Backend Sets Health potrebbero non essere visualizzate come OK (verde). Questo perché Oracle Cloud Native Environment non è stato ancora creato sul piano di controllo e sui nodi di lavoro Kubernetes. Le fasi successive affronteranno questo problema.

Creare un file di configurazione CLI piattaforma

Gli amministratori possono utilizzare un file di configurazione per semplificare la creazione e la gestione di ambienti e moduli. Il file di configurazione, scritto con una sintassi YAML valida, include tutte le informazioni sugli ambienti e sui moduli da creare. L'uso di un file di configurazione consente di salvare le voci ripetute delle opzioni del comando CLI della piattaforma.

Nota: se vengono immessi più nodi del piano di controllo nel file myenvironment.yaml utilizzato per configurare Oracle Cloud Native Environment, olcnectl richiede che i dettagli di un load balancer (nel caso in cui si tratti del load balancer Oracle Cloud Infrastructure) vengano immessi nel file myenvironment.yaml. Per ottenere questo risultato, immettere un nuovo argomento (load-balancer: <enter-your-OCI-LB-ip-here>) in myenvironment.yaml.

File di configurazione di esempio:

environments:
  - environment-name: myenvironment
    globals:
      api-server: 127.0.0.1:8091
      secret-manager-type: file
      olcne-ca-path: /etc/olcne/configs/certificates/production/ca.cert
      olcne-node-cert-path: /etc/olcne/configs/certificates/production/node.cert
      olcne-node-key-path:  /etc/olcne/configs/certificates/production/node.key
    modules:
      - module: kubernetes
        name: mycluster
        args:
          container-registry: container-registry.oracle.com/olcne
          load-balancer: 10.0.0.<XXX>:6443
          master-nodes: ocne-control01:8090,ocne-control02:8090,ocne-control03:8090
          worker-nodes: ocne-worker01:8090,ocne-worker02:8090
          selinux: enforcing
          restrict-service-externalip: true
          restrict-service-externalip-ca-cert: /etc/olcne/configs/certificates/restrict_external_ip/production/ca.cert
          restrict-service-externalip-tls-cert: /etc/olcne/configs/certificates/restrict_external_ip/production/node.cert
          restrict-service-externalip-tls-key: /etc/olcne/configs/certificates/restrict_external_ip/production/node.key

Durante la distribuzione del laboratorio, viene generato automaticamente un file di configurazione che può essere utilizzato nell'esercizio. Per ulteriori informazioni sulla creazione manuale di un file di configurazione, consultare la documentazione disponibile all'indirizzo Using a Configuration File.

Aggiornare il file di configurazione

  1. (Su ocne-operator) Visualizzare il contenuto del file di configurazione.

    cat ~/myenvironment.yaml
    
  2. (Su ocne-operator) Aggiungere il valore dell'indirizzo IPv4 del load balancer al file myenvironment.yaml.

    LB_IP=$(oci lb load-balancer list --auth instance_principal --compartment-id $COMPARTMENT_OCID | jq -r '.data[]."ip-addresses"[]."ip-address"')
    sed -i "14i\          load-balancer: $LB_IP:6443" ~/myenvironment.yaml
    

    Affinché il comando precedente riesca, è necessario eseguire i passi preparatori riportati di seguito sul nodo operatore. Questi passi vengono eseguiti automaticamente nell'ambito della distribuzione del laboratorio gratuito.

    • Interfaccia CLI di Oracle Cloud Infrastructure installata.

    • Cercare l'OCID del compartimento in cui distribuire Oracle Cloud Native Environment.

    • Le variabili di ambiente sono state aggiunte al file ~/.bashrc degli utenti.

      • COMPARTMENT_OCID=<compartment_ocid>
      • LC_ALL=C.UTF-8
      • LANG=C.UTF-8
  3. (Su ocne-operator) Verificare che il valore load balancer sia stato aggiunto al file myenviroment.yaml.

    cat ~/myenvironment.yaml
    

Creare l'ambiente e il modulo Kubernetes

  1. (Su ocne-operator) Creare l'ambiente.

    cd ~
    olcnectl environment create --config-file myenvironment.yaml
    

    Output di esempio:

    [oracle@ocne-operator ~]$ olcnectl environment create --config-file myenvironment.yaml
    Environment myenvironment created.
    
  2. (Su ocne-operator) Creare il modulo Kubernetes.

    olcnectl module create --config-file myenvironment.yaml
    

    Output di esempio:

    [oracle@ocne-operator ~]$ olcnectl module create --config-file myenvironment.yaml
    Modules created successfully.
    
  3. (Su ocne-operator) Convalidare il modulo Kubernetes.

    olcnectl module validate --config-file myenvironment.yaml
    

    Output di esempio:

    [oracle@ocne-operator ~]$ olcnectl module validate --config-file myenvironment.yaml
    Validation of module mycluster succeeded.
    

    In questo ambiente di laboratorio gratuito non sono presenti errori di convalida. In caso di errori, i comandi necessari per correggere i nodi vengono forniti come output di questo comando.

  4. (Su ocne-operator) Installare il modulo Kubernetes.

    olcnectl module install --config-file myenvironment.yaml
    

    Nota: il completamento della distribuzione di Kubernetes nei nodi richiederà alcuni minuti.

    Output di esempio:

    [oracle@ocne-operator ~]$ olcnectl module install --config-file myenvironment.yaml
    Modules installed successfully.
    
  5. (Su ocne-operator) Verificare la distribuzione del modulo Kubernetes.

    olcnectl module instances --config-file myenvironment.yaml
    

    Output di esempio:

    [oracle@ocne-operator ~]$ olcnectl module instances --config-file myenvironment.yaml
    INSTANCE           	MODULE    	STATE    
    mycluster          	kubernetes	installed
    ocne-control01:8090	node      	installed
    ocne-control02:8090	node      	installed
    ocne-control03:8090	node      	installed
    ocne-worker01:8090 	node      	installed
    ocne-worker02:8090 	node      	installed
    [oracle@ocne-operator ~]$
    

Imposta kubectl

  1. (Nel nodo ocne-controlxx) Impostare il comando kubectl.

    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    export KUBECONFIG=$HOME/.kube/config
    echo 'export KUBECONFIG=$HOME/.kube/config' >> $HOME/.bashrc
    
  2. (Su sysop01) Configurare il comando kubectl.

    1. Copiare il file di configurazione da uno dei nodi del piano di controllo.

      mkdir -p $HOME/.kube
      ssh -o StrictHostKeyChecking=no 10.0.0.150 "sudo cat /etc/kubernetes/admin.conf" > $HOME/.kube/config
      
    2. Esportare la configurazione per l'uso con il comando kubectl.

      sudo chown $(id -u):$(id -g) $HOME/.kube/config
      export KUBECONFIG=$HOME/.kube/config
      echo 'export KUBECONFIG=$HOME/.kube/config' >> $HOME/.bashrc
      
  3. (Su sysop01) Verificare che funzioni kubectl.

    kubectl get nodes
    

    Output di esempio:

    [oracle@sysop01 ~]$ kubectl get nodes
    NAME             STATUS   ROLES                  AGE     VERSION
    ocne-control01   Ready    control-plane,master   5m10s   v1.23.7+1.el8
    ocne-control02   Ready    control-plane,master   3m33s   v1.23.7+1.el8
    ocne-control03   Ready    control-plane,master   4m29s   v1.23.7+1.el8
    ocne-worker01    Ready    <none>                 3m15s   v1.23.7+1.el8
    ocne-worker02    Ready    <none>                 3m8s    v1.23.7+1.el8
    [oracle@sysop01 ~]$
    

Conferma che il load balancer gestisce l'indisponibilità del nodo del piano di controllo

L'installazione di Oracle Cloud Native Environment con tre nodi del piano di controllo dietro un load balancer esterno è completa.

La sezione successiva conferma che il load balancer esterno rileverà quando si verifica un errore in un nodo del piano di controllo e lo rimuoverà dal criterio di distribuzione del traffico Round Robin. Il passo finale del test dimostra che quando il nodo "mancante" viene recuperato, si ricollega automaticamente al cluster e diventa disponibile per gestire di nuovo il traffico basato su cluster.

Conferma attivazione load balancer

Se si utilizza l'ambiente di laboratorio gratuito, accedere alla console cloud come mostrato nella documentazione di base di Oracle Linux Lab.

Accedere ai dettagli del load balancer

  1. Se non è già connesso, eseguire il login alla console cloud.

    public_ip_address

  2. Fare clic sul menu hamburger (in alto a sinistra), quindi su Networking e Load balancer.

    public_ip_address

  3. Viene visualizzata la pagina Load balancer.

    public_ip_address

  4. Individuare il compartimento utilizzato dall'elenco a discesa.

    public_ip_address

    Se hai bisogno di istruzioni su questo passaggio, consulta Nozioni di base su Oracle Linux Lab per i dettagli.

  5. I dettagli del riepilogo del load balancer creato in precedenza devono avere un aspetto simile a questa immagine.

    public_ip_address

  6. Fare clic sul collegamento ocne-load-balancer.

  7. Scorrere fino al collegamento Set backend (sul lato sinistro del browser sotto l'intestazione Risorse).

  8. Fare clic sul collegamento Set backend.

    public_ip_address

  9. Viene visualizzato un collegamento al set backend esistente. Fare clic sul collegamento (in questo esempio si chiama ocne-lb-backend-set).

    public_ip_address

  10. Fare clic sul collegamento Backend (sul lato sinistro del browser sotto l'intestazione Risorse).

    public_ip_address

  11. La schermata conferma la presenza di tre nodi in buono stato.

    public_ip_address

Arresta una delle istanze del nodo del piano di controllo

  1. Fare clic sul menu hamburger (in alto a sinistra) e andare a Computazione, quindi a Istanze.

    public_ip_address

  2. Viene visualizzata la pagina Istanze.

    public_ip_address

  3. Fare clic su uno dei nodi del piano di controllo elencati (ad esempio: ocne-control01).

  4. Vengono visualizzati i dettagli dell'istanza.

    public_ip_address

  5. Fare clic sul pulsante *Arresta.

  6. Nella finestra di dialogo popup selezionare la casella di controllo Forza arresto dell'istanza disattivandola immediatamente, quindi fare clic sul pulsante Forza arresto istanza.

    Nota: NON eseguire questa operazione in un sistema di produzione in quanto potrebbe causare perdita di dati, danneggiamento o peggioramento dell'intero sistema.

    public_ip_address

  7. Attendere che la pagina Dettagli istanza confermi che l'istanza è Interrotta.

    public_ip_address

Verifica l'errore del nodo del piano di controllo registrato da Oracle Cloud Infrastructure Load Balancer

  1. Passare a Networking > Load balancer.

  2. Fare clic sul collegamento ocne-load-balancer.

  3. In Risorse nel pannello in basso a sinistra, fare clic su Set backend.

  4. Fare quindi clic sul nome visualizzato nella tabella Set backend, ad esempio ocne-lb-backend-set.

  5. Fare clic su Backend per visualizzare i nodi.

    Lo stato in questa pagina deve essere aggiornato automaticamente. La modifica dello stato visualizzato richiede in genere 2-3 minuti.

  6. Lo stato della fase iniziale indicata nel report deve essere Avvertenza.

    public_ip_address

  7. Qualche minuto dopo (~2-3 minuti) lo stato verrà aggiornato allo stato Critico. Ciò significa che il processo del load balancer di Oracle Cloud Infrastructure ha confermato che il nodo non risponde, pertanto il load balancer non inoltra più le richieste in entrata al nodo del piano di controllo backend non disponibile.

    public_ip_address

Conferma le risposte del cluster Oracle Cloud Native Environment

Dato che nel cluster rimangono almeno due membri attivi, i nodi del piano di controllo attivi devono rispondere ai comandi kubectl.

  1. (Su sysop01) Verificare che kubectl risponda e segnala il nodo del piano di controllo appena arrestato come NotReady (non disponibile).

    kubectl get nodes
    

    Output di esempio:

    [oracle@sysop01 ~]$ kubectl get nodes
    NAME             STATUS     ROLES                  AGE   VERSION
    ocne-control01   NotReady   control-plane,master   26m   v1.23.7+1.el8
    ocne-control02   Ready      control-plane,master   25m   v1.23.7+1.el8
    ocne-control03   Ready      control-plane,master   24m   v1.23.7+1.el8
    ocne-worker01    Ready      <none>                 24m   v1.23.7+1.el8
    ocne-worker02    Ready      <none>                 26m   v1.23.7+1.el8
    [oracle@sysop01 ~]$
    

    Nota:* è probabile che siano trascorsi 2-3 minuti prima della visualizzazione dello stato **NotReady. Ripetere il comando kubectl get nodes periodicamente finché lo stato non passa da Pronto a NotReady.

Riavviare il nodo del piano di controllo arrestato

  1. Passare a Computazione > Istanze.

  2. Fare clic sul nodo del piano di controllo arrestato in precedenza.

  3. Avviare l'istanza facendo clic sul pulsante Avvia.

    Attendere che la sezione Stato diventi Verde e che l'istanza sia In esecuzione.

    public_ip_address

Verifica che il nodo del piano di controllo raggiunga il cluster del load balancer di Oracle Cloud Infrastructure

  1. Passare a Networking > Load balancer.

  2. Fare clic sul collegamento ocne-load-balancer.

  3. In Risorse nel pannello in basso a sinistra, fare clic su Set backend.

  4. Fare quindi clic sul nome visualizzato nella tabella Set backend, ad esempio ocne-lb-backend-set.

  5. Fare clic su Backend per visualizzare i nodi.

    Lo stato in questa pagina deve essere aggiornato automaticamente. La modifica dello stato visualizzato richiede in genere 2-3 minuti.

  6. Stato globale mostrerà lo stato Avvertenza fino a quando non viene rilevato il nodo riavviato.

    public_ip_address

  7. Una volta rilevato, l'integrità globale restituirà OK.

    public_ip_address

In questa fase il nodo di controllo si è ricongiunto al cluster e tutti e tre i nodi del piano di controllo partecipano alla deposit round di ripartizione del traffico in entrata nel cluster.

Recupera lo stato del nodo del piano di controllo

  1. (Su sysop01) Verificare che kubectl risponda e segnala il nodo del piano di controllo che è stato riavviato con stato Ready (Disponibile).

    kubectl get nodes
    

    Output di esempio:

    [oracle@sysop01 ~]$ kubectl get nodes
    NAME             STATUS     ROLES                  AGE   VERSION
    ocne-control01   Ready      control-plane,master   26m   v1.23.7+1.el8
    ocne-control02   Ready      control-plane,master   25m   v1.23.7+1.el8
    ocne-control03   Ready      control-plane,master   24m   v1.23.7+1.el8
    ocne-worker01    Ready      <none>                 24m   v1.23.7+1.el8
    ocne-worker02    Ready      <none>                 26m   v1.23.7+1.el8
    [oracle@sysop01 ~]$
    

    *Nota: le modifiche dello stato possono richiedere 2-3 minuti prima che venga visualizzato lo stato aggiornato. Ripetere il comando kubectl get nodes periodicamente finché lo stato non viene modificato.

    Ciò conferma che il load balancer è stato configurato correttamente e che sta accettando le richieste.

Per ulteriori informazioni

Altre risorse di apprendimento

Esplora altri laboratori su docs.oracle.com/learn o visita altri contenuti di formazione gratuiti sul canale Oracle Learning YouTube. Inoltre, visitare education.oracle.com/learning-explorer per diventare un Oracle Learning Explorer.

Per la documentazione sul prodotto, visitare Oracle Help Center.