Nota
- Questa esercitazione richiede l'accesso a Oracle Cloud. Per iscriversi a un account gratuito, consulta Inizia a utilizzare Oracle Cloud Infrastructure Free Tier.
- Utilizza valori di esempio per le credenziali, la tenancy e i compartimenti di Oracle Cloud Infrastructure. Quando completi il tuo laboratorio, sostituisci questi valori con quelli specifici del tuo ambiente cloud.
Imposta Oracle Cloud Infrastructure Container Engine for Kubernetes con tre nodi di lavoro
Introduzione
In questa esercitazione verrà descritto come impostare un cluster Kubernetes costituito dal piano di controllo Kubernetes e dal piano dati (node pool) utilizzando Oracle Cloud Infrastructure Container Engine for Kubernetes (OKE). Inoltre, distribuiremo ed elimineremo due applicazioni di esempio sulla piattaforma Kubernetes per dimostrare che funziona. Questa esercitazione preparerà le basi per i futuri tutorial che analizzeranno i servizi di rete offerti all'interno di Kubernetes per le applicazioni ospitate in container.


Di seguito sono riportati alcuni esempi di modelli di distribuzione OKE.
-
Esempio 1: cluster con plugin CNI Flannel, endpoint API Kubernetes pubblico, nodi di lavoro privati e load balancer pubblici.
-
Esempio 2: cluster con plugin CNI Flannel, endpoint API Kubernetes privato, nodi di lavoro privati e load balancer pubblici.
-
Esempio 3: cluster con il plugin CNI OCI, l'endpoint API Kubernetes pubblico, i nodi di lavoro privati e i load balancer pubblici.
-
Esempio 4: cluster con plugin CNI OCI, endpoint API Kubernetes privato, nodi di lavoro privati e load balancer pubblici.
Per ulteriori informazioni sui diversi modelli di distribuzione OKE che è possibile scegliere, vedere Esempio di configurazioni di risorse di rete.
In questa esercitazione verrà implementato il modello di distribuzione Esempio 3.
Obiettivi
- Implementeremo un cluster di controllo Kubernetes e nodi di lavoro completamente distribuiti e configurati all'interno di Oracle Cloud Infrastructure (OCI). Questo è quello che chiamiamo Oracle Cloud Infrastructure Container Engine for Kubernetes (OKE). Distribuiremo due applicazioni di esempio in due spazi di nomi diversi in cui un'applicazione verrà distribuita utilizzando un grafico Helm in un nuovo spazio di nomi. Alla fine, ripuliremo le applicazioni o i pod. Non distribuiremo alcun servizio di rete per applicazioni o pod gestiti da Kubernetes.
Task 1: Creare un nuovo cluster Kubernetes e verificare i componenti
-
Fare clic sul menu hamburger.

- Fare clic su Servizi per sviluppatori.
- Fare clic su Cluster Kubernetes (OKE).

-
Fare clic su Crea cluster.

- Selezionare Creazione rapida.
- Fare clic su Sottometti.

-
Nella pagina Crea cluster (rapido) immettere le informazioni riportate di seguito.
- Immettere un nome cluster.
- Selezionare un compartimento.
- Selezionare la versione Kubernetes.
- Selezionare l'endpoint API Kubernetes come endpoint pubblico.
- Selezionare il tipo di nodo da gestire.
- scorrere in Basso.

- Selezionare i nodi di lavoro Kubernetes come lavoratori privati.
- scorrere in Basso.

- Mantenere il conteggio dei nodi (nodi di lavoro) predefinito 3.
- Fare clic su Avanti.

- Rivedere i parametri del cluster.
- scorrere in Basso.

- Esaminare i parametri dei pool di nodi.
- scorrere in Basso.

- Non selezionare la casella di controllo Crea un cluster di base.
- Fare clic su Crea cluster

-
Rivedere lo stato dei diversi componenti creati.

- Assicurati che tutto abbia un controllo verde.
- Fare clic su Chiudi.

- Verificare che lo stato sia CREATING.
- scorrere in Basso.

-
Rivedere lo stato di creazione del cluster e del pool di nodi. Il cluster di controllo Kubernetes è in fase di creazione e il pool di nodi di lavoro verrà creato in un secondo momento.

-
Dopo alcuni minuti, la creazione del cluster di controllo Kubernetes è riuscita.

-
Il pool di nodi di lavoro verrà ora creato.

-
Dopo alcuni minuti, la creazione del pool di nodi di lavoro è riuscita.

- Fare clic su Pool di nodi.
- Si noti che i nodi di lavoro nel pool sono ancora in fase di creazione.
- Fare clic su 3 di nodi di lavoro.

-
Si noti che lo stato di tutti i nodi è Non pronto.

-
Dopo alcuni minuti saranno pronti.

Il cluster di controllo Kubernetes e i nodi di lavoro sono completamente distribuiti e configurati all'interno di Oracle Cloud Infrastructure (OCI). Questo è quello che chiamiamo Oracle Cloud Infrastructure Container Engine for Kubernetes.
Task 2: verificare i componenti del cluster Kubernetes distribuiti nella console OCI
Quando utilizziamo OKE per creare un cluster Kubernetes, alcune risorse verranno create all'interno di OCI per supportare questa distribuzione.
La prima e più importante risorsa è la rete cloud virtuale (VCN). Poiché è stata scelta l'opzione Creazione rapida, è stata creata una nuova VCN dedicata a OKE.
-
Eseguire il login alla console OCI e andare a Networking, Reti cloud virtuali (VCN), verrà visualizzata la nuova VCN creata. Fare clic sulla VCN.

All'interno della VCN, verranno visualizzate tre subnet, una privata e due subnet pubbliche per supportare la distribuzione OKE.

-
Verificare le risorse.
- Fare clic su Blocchi/prefissi CIDR per esaminare il CIDR della VCN.
- Si noti che
10.0.0.0/16è stato assegnato da OCI.

- Fare clic su Tabelle instradamento per esaminare le tabelle di instradamento.
- Si noti che sono state create due tabelle di instradamento: l'instradamento alle subnet private e l'instradamento alle subnet pubbliche.

- Fare clic su Gateway Internet per esaminare il gateway Internet che fornirà la connettività Internet utilizzando le subnet pubbliche da e verso Internet.
- Si noti che esiste un solo gateway internet.

- Fare clic su Liste di sicurezza per esaminare le liste di sicurezza che possono essere regole in entrata o in uscita per proteggere la connettività tra le subnet.
- Si noti che esistono tre liste di sicurezza, una utilizzata per la protezione della connettività dei nodi di lavoro Kubernetes, la seconda utilizzata per la protezione degli endpoint API Kubernetes e la terza per la protezione dei servizi Kubernetes.

- Fare clic su Gateway NAT per esaminare il gateway NAT che fornirà la connettività Internet utilizzando le subnet private su Internet.
- Si noti che esiste un solo gateway NAT.

- Fare clic su Service Gateway per esaminare il gateway di servizi che fornirà l'accesso privato a servizi Oracle specifici, senza esporre i dati a un gateway Internet o NAT.
- Si noti che esiste un solo gateway di servizio.

- Aprire OCI Console, fare clic sul menu hamburger e andare a Computazione, Istanze.
- Si noti che vengono create tre istanze che verranno utilizzate come tre nodi di lavoro Kubernetes specificati durante la distribuzione.

- Aprire OCI Console, fare clic sul menu hamburger e andare a Gestione IP, IP pubblici riservati.
- Si noti che esiste un indirizzo IP pubblico che termina con
.166, riservato per l'endpoint API pubblico Kubernetes.

Se mettiamo tutte le informazioni che abbiamo appena raccolto e le collochiamo in un diagramma, il diagramma sarà simile a quello mostrato nell'immagine seguente.

-
Tabelle con dettagli di configurazione per distribuire OKE
-
VCN:
Risorsa Nome VCN • Nome: OKE-vcn-quick-IH-OKE-CLUSTER-af593850a
• Blocco CIDR: 10.0.0.0/16
• Risoluzione DNS: selezionataGateway Internet • Nome: OKE-igw-quick-IH-OKE-CLUSTER-af593850a Gateway NAT • Nome: OKE-ngw-quick-IH-OKE-CLUSTER-af593850a Gateway del servizio • Nome: OKE-sgw-quick-IH-OKE-CLUSTER-af593850a
• Servizi: tutti i servizi regionali in Oracle Services NetworkOpzioni DHCP • Tipo di DNS impostato su Resolver Internet e VCN -
Subnet:
Risorsa Esempio Subnet pubblica per l'endpoint API Kubernetes Scopo: Endpoint API Kubernetes con le seguenti proprietà:
• Tipo: Regionale
• Blocco CIDR: 10.0.0.0/28
• Tabella di instradamento: OKE-public-routetable-IH-OKE-CLUSTER-af593850a
• Accesso subnet: Pubblico
• Risoluzione DNS: Selezionato
• Opzioni DHCP: Predefinito
• Lista di sicurezza: OKE-k8sApiEndpoint-quick-IH-OKE-CLUSTER-af593850aSubnet privata per nodi di lavoro Scopo: workernodes con le seguenti proprietà:
• Tipo: Regionale
• Blocco CIDR: 10.0.10.0/24
• Tabella di instradamento: N/A
• Accesso subnet: Privato
• Risoluzione DNS: Selezionato
• Opzioni DHCP: Predefinito
• Lista di sicurezza: OKE-nodeseclist-quick-IH-OKE-CLUSTER-af593850aSubnet privata per i pod Scopo: pod con le seguenti proprietà:
• Tipo: Regionale
• Blocco CIDR: 10.96.0.0/16
• Tabella di instradamento: OKE-private-routetable-IH-OKE-CLUSTER-af593850a
• Accesso subnet: Privato
• Risoluzione DNS: Selezionato
• Opzioni DHCP: Predefinito
• Lista di sicurezza: N/ASubnet pubblica per i load balancer dei servizi Scopo: Load balancer con le seguenti proprietà:
• Tipo: Regionale
• Blocco CIDR: 10.0.20.0/24
• Tabella di instradamento: OKE-private-routetable-IH-OKE-CLUSTER-af593850a
• Accesso subnet: Pubblico
• Risoluzione DNS: Selezionato
• Opzioni DHCP: Predefinito
• Lista di sicurezza: OKE-svclbseclist-quick-IH-OKE-CLUSTER-af593850a -
Tabelle di instradamento:
Risorsa Esempio Tabella di instradamento per la subnet dell'endpoint API Kubernetes pubblico Scopo: endpoint API routetable-Kubernetes, con una regola di instradamento definita come segue:
• Blocco CIDR di destinazione: 0.0.0.0/0
• Tipo di destinazione: gateway Internet
• Destinazione: OKE-igw-quick-IH-OKE-CLUSTER-af593850aTabella di instradamento per la subnet dei pod privati Scopo: routetable-pods, con due regole di instradamento definite come segue:
• Regola per il traffico verso Internet:
◦ Blocco CIDR di destinazione: 0.0.0.0/0
◦ Tipo di destinazione: Gateway NAT
◦ Target: OKE-ngw-quick-IH-OKE-CLUSTER-af593850a
• Regola per il traffico verso i servizi OCI:
◦ Destinazione: tutti i servizi regionali in Oracle Services Network
◦ Tipo di destinazione: Gateway di servizio
◦ Target: OKE-sgw-quick-IH-OKE-CLUSTER-af593850aTabella di instradamento per la subnet dei load balancer pubblici Scopo: router-serviceloadbalancer, con una regola di instradamento definita come segue:
• Blocco CIDR di destinazione: 0.0.0.0/0
• Tipo di destinazione: gateway Internet
• Destinazione: OKE-igw-quick-IH-OKE-CLUSTER-af593850a
-
-
Regole lista di sicurezza per la subnet endpoint API Kubernetes pubblica
La lista di sicurezza
oke-k8sApiEndpoint-quick-IH-OKE-CLUSTER-af593850acontiene le regole di entrata e uscita come mostrato nelle tabelle riportate di seguito.-
Regole di entrata:
Senza conservazione dello stato Origine Protocollo IP Intervallo porte di origine Intervallo di porte di destinazione Tipo e codice Consente Descrizione N. 0.0.0.0/0 TCP Tutti 6.443 Traffico TCP per le porte: 6443 Accesso esterno all'endpoint API Kubernetes N. 10.0.10.0/24 TCP Tutti 6.443 Traffico TCP per le porte: 6443 Comunicazione da worker Kubernetes a endpoint API Kubernetes N. 10.0.10.0/24 TCP Tutti 12.250 Traffico TCP per le porte: 12250 Lavoratore Kubernetes per controllare la comunicazione del piano N. 10.0.10.0/24 ICMP 3, 4 Traffico ICMP per: 3, 4 Destinazione non raggiungibile: è necessaria la frammentazione, ma l'impostazione è Non frammentare Ricerca del percorso -
Regole di uscita:
Senza conservazione dello stato Obiettivo Protocollo IP Intervallo porte di origine Intervallo di porte di destinazione Tipo e codice Consente Descrizione N. Tutti i servizi AMS in Oracle Services Network TCP Tutti 443 Traffico TCP per le porte: 443 HTTPS Consenti al piano di controllo Kubernetes di comunicare con OKE N. 10.0.10.0/24 TCP Tutti Tutti Traffico TCP per le porte: Tutto Tutto il traffico ai nodi di lavoro N. 10.0.10.0/24 ICMP 3, 4 Traffico ICMP per: 3, 4 Destinazione non raggiungibile: è necessaria la frammentazione, ma l'impostazione è Non frammentare Ricerca del percorso
-
-
Regole lista di sicurezza per subnet nodi di lavoro privati
La lista di sicurezza
oke-nodeseclist-quick-IH-OKE-CLUSTER-af593850acontiene le regole di entrata e uscita come mostrato nelle tabelle riportate di seguito.Regole di entrata:
Senza conservazione dello stato Origine Protocollo IP Intervallo porte di origine Intervallo di porte di destinazione Tipo e codice Consente Descrizione N. 10.0.10.0/24 Tutti i protocolli Tutto il traffico per tutte le porte Consenti ai pod su un nodo di lavoro di comunicare con i pod su altri nodi di lavoro N. 10.0.0.0/28 ICMP 3, 4 Traffico ICMP per: 3, 4 Destinazione non raggiungibile: è necessaria la frammentazione, ma l'impostazione è Non frammentare Ricerca del percorso N. 10.0.0.0/28 TCP Tutti Tutti Traffico TCP per le porte: Tutto Accesso TCP dal piano di controllo Kubernetes N. 0.0.0.0/0 TCP Tutti 22 Traffico TCP per le porte: 22 Protocollo di login remoto SSH Traffico SSH in entrata ai nodi di lavoro N. 10.0.20.0/24 TCP Tutti 32.291 Traffico TCP per le porte: 32291 N. 10.0.20.0/24 TCP Tutti 10.256 Traffico TCP per le porte: 10256 N. 10.0.20.0/24 TCP Tutti 31.265 Traffico TCP per le porte: 31265 Regole di uscita:
Senza conservazione dello stato Obiettivo Protocollo IP Intervallo porte di origine Intervallo di porte di destinazione Tipo e codice Consente Descrizione N. 10.0.10.0/24 Tutti i protocolli Tutto il traffico per tutte le porte Consenti ai pod su un nodo di lavoro di comunicare con i pod su altri nodi di lavoro N. 10.0.0.0/28 TCP Tutti 6.443 Traffico TCP per le porte: 6443 Accesso all'endpoint API Kubernetes N. 10.0.0.0/28 TCP Tutti 12.250 Traffico TCP per le porte: 12250 Lavoratore Kubernetes per controllare la comunicazione del piano N. 10.0.0.0/28 ICMP 3, 4 Traffico ICMP per: 3, 4 Destinazione non raggiungibile: è necessaria la frammentazione, ma l'impostazione è Non frammentare Ricerca del percorso N. Tutti i servizi AMS in Oracle Services Network TCP Tutti 443 Traffico TCP per le porte: 443 HTTPS Consenti ai nodi di comunicare con OKE per garantire l'avvio corretto e il funzionamento continuo N. 0.0.0.0/0 ICMP 3, 4 Traffico ICMP per: 3, 4 Destinazione non raggiungibile: è necessaria la frammentazione, ma l'impostazione è Non frammentare Accesso ICMP dal piano di controllo Kubernetes N. 0.0.0.0/0 Tutti i protocolli Tutto il traffico per tutte le porte Accesso a Internet ai nodi di lavoro -
Regole lista di sicurezza per la subnet del load balancer pubblico
La lista di sicurezza
oke-svclbseclist-quick-IH-OKE-CLUSTER-af593850acontiene le regole di entrata e uscita come mostrato nelle tabelle riportate di seguito.-
Regole di entrata:
Senza conservazione dello stato Origine Protocollo IP Intervallo porte di origine Intervallo di porte di destinazione Tipo e codice Consente Descrizione N. 0.0.0.0/0 TCP Tutti 80 Traffico TCP per le porte: 80 -
Regole di uscita:
Senza conservazione dello stato Obiettivo Protocollo IP Intervallo porte di origine Intervallo di porte di destinazione Tipo e codice Consente Descrizione N. 10.0.10.0/24 TCP Tutti 32.291 Traffico TCP per le porte: 32291 N. 10.0.10.0/24 TCP Tutti 10.256 Traffico TCP per le porte: 10256 N. 10.0.10.0/24 TCP Tutti 31.265 Traffico TCP per le porte: 31265
-
Task 3: verificare che il cluster Kubernetes sia in esecuzione utilizzando l'interfaccia CLI
-
Apri OCI Console, fai clic sul menu hamburger e vai a Developer Services, Kubernetes Clusters (OKE). Fare clic sul cluster Kubernetes creato nel task 1.

- scorrere in Basso.
- Fare clic su Avvio rapido.

-
Fare clic su Accedi al cluster.

- Selezionare Accesso a Cloud Shell.
- Fare clic su Copia per copiare il comando per consentire l'accesso al cluster Kubernetes.
- Fare clic su Avvia Cloud Shell.

Il diagramma riportato di seguito mostra come verrà effettuata la connessione per eseguire la gestione sul cluster OKE utilizzando OCI Cloud Shell.

-
Verrà avviata OCI Cloud Shell.

Alcuni messaggi informativi saranno mostrati su ciò che sta accadendo in background.

In questo caso, è possibile consentire l'esecuzione di OCI Cloud Shell su architetture CPU diverse.
-
Per chiudere questo messaggio informativo, fare clic su Chiudi.

-
Siamo pronti a utilizzare OCI Cloud Shell per accedere al cluster Kubernetes.

-
Incollare il comando copiato in precedenza in questo task.

-
Eseguire il comando seguente per ottenere informazioni sul cluster Kubernetes.
kubectl cluster-info
-
Eseguire il comando seguente per ottenere informazioni sui nodi di lavoro.
kubectl get nodes
-
Eseguire il comando seguente per ottenere ulteriori informazioni sui nodi di lavoro.
kubectl get nodes -o wide
-
Eseguire il comando seguente per cancellare lo schermo e iniziare con una nuova schermata.
clear
- Si noti che l'output precedente è stato cancellato, ma è comunque accessibile quando si scorre verso l'alto.
- Fare clic sull'icona Riduci a icona per ridurre al minimo la finestra di OCI Cloud Shell.

-
Fare clic su Chiudi e chiudere la finestra Accedi al cluster.

La connessione viene effettuata per eseguire la gestione sul cluster OKE utilizzando OCI Cloud Shell.

Task 4: Distribuire un'applicazione Nginx di esempio utilizzando kubectl
-
Eseguire i comandi seguenti.
- Prendere nota del comando per ottenere la versione di Kubernetes.
- Prendere nota del comando per distribuire un'applicazione di esempio.
- Fare clic su Ripristina per ripristinare la finestra OCI Cloud Shell.

-
Eseguire il comando seguente per ottenere la versione di Kubernetes.
kubectl version
-
Eseguire il comando seguente per verificare i pod o le applicazioni correnti distribuiti.
kubectl get podsNotare che non sono state trovate risorse.

-
Eseguire il comando seguente per distribuire una nuova applicazione di esempio.
kubectl create -f https://k8s.io/examples/application/deployment.yaml
-
Eseguire il comando seguente per verificare i pod o le applicazioni correnti distribuiti.
kubectl get pods -
Si noti che lo stato dei pod è RUNNING. Ciò significa che l'applicazione appena distribuita è in esecuzione.

-
Eseguire il comando seguente per ottenere gli indirizzi IP per accedere all'applicazione.
kubectl get deploy,svc -
Si noti che all'applicazione appena distribuita non sono assegnati indirizzi IP e che solo il cluster Kubernetes dispone di un servizio IP cluster collegato a tale applicazione con un indirizzo IP interno.

-
Eseguire il comando seguente per esaminare in modo specifico i servizi di rete collegati per l'applicazione appena distribuita.
kubectl get svc ngnix -
Si noti che non sono presenti servizi (di rete) distribuiti o collegati per l'applicazione Nginx distribuita. Per questo motivo, non saremo in grado di accedere all'applicazione da un'altra applicazione o utilizzare il browser Web per accedere alla pagina Web nel server Web Nginx. Ne parleremo in un altro tutorial.

Task 5: Distribuzione di un'applicazione MySQL di esempio mediante un grafico Helm
-
Un grafico Helm è un pacchetto che contiene tutte le risorse necessarie per distribuire un'applicazione in un cluster Kubernetes. Eseguire i comandi seguenti per:
-
Aggiungere il repository Bitnami per il database MySQL.
helm repo add bitnami https://charts.bitnami.com/bitnami -
Distribuisci un database MySQL sui nodi di lavoro Kubernetes e crea anche un nuovo mysql dello spazio di nomi.
helm install mysql bitnami/mysql -–namespace mysql --create-namespace

-
-
Per ottenere le applicazioni distribuite, eseguire il comando seguente. Questo comando visualizzerà solo le applicazioni distribuite nello spazio di nomi corrente (predefinito).
kubectl get pods -
Si noti che solo l'applicazione Nginx viene visualizzata nello spazio di nomi corrente (predefinito). Questo comando ora visualizzerà le applicazioni distribuite a livello di cluster (tutti gli spazi di nomi).
kubectl get pods -A -w- Si noti che l'applicazione Nginx è in esecuzione nello spazio di nomi predefinito.
- Si noti che l'applicazione MySQL è in esecuzione nel nuovo spazio di nomi mysql.

Task 6: Cleanup dei pod e degli spazi di nomi
Abbiamo distribuito un'applicazione nello spazio di nomi predefinito (Nginx) e un'altra applicazione in un nuovo spazio di nomi (MySQL). Utilizzando i grafici Helm, cerchiamo di ripulire l'ambiente in modo da poter iniziare di nuovo ogni volta che ne abbiamo bisogno.
-
Usare il comando seguente per ottenere tutti i nodi di lavoro (a livello di cluster).
kubectl get nodes -o wide -
Utilizzare il comando seguente per ottenere tutti i pod in esecuzione nello spazio di nomi corrente (predefinito).
kubectl get pods -o wide -
Eseguire il comando seguente per ottenere tutti gli spazi di nomi.
kubectl get namespaces -
Eseguire il comando seguente per ottenere in modo specifico tutti i pod in esecuzione nello spazio di nomi corrente (predefinito).
kubectl get pods --namespace=default -
Eseguire il comando seguente per ottenere in modo specifico tutti i pod in esecuzione nello spazio di nomi MySQL.
kubectl get pods --namespace=mysql



-
Eseguire il comando seguente per eliminare tutte le distribuzioni o i pod nello spazio di nomi predefinito.
kubectl delete --all deployments --namespace=default -
Utilizzare il comando seguente per verificare se le distribuzioni o i pod vengono eliminati.
kubectl get pods --namespace=default -
Utilizzare il comando seguente per ottenere in modo specifico tutti i pod in esecuzione nello spazio di nomi MySQL. Verifica se esiste ancora.
kubectl get pods --namespace=mysql

-
Eseguire il comando seguente per eliminare tutte le distribuzioni o i pod e lo spazio di nomi MySQL completo.
kubectl delete namespace mysql -
Utilizzare questo comando per raccogliere tutti gli spazi di nomi e verificare se lo spazio di nomi MySQL viene eliminato.
kubectl get namespaces

Conferme
- Autore: Iwan Hoogendoorn (esperto della rete OCI)
Altre risorse di apprendimento
Esplora altri laboratori su docs.oracle.com/learn o accedi a più contenuti di formazione gratuiti sul canale YouTube di Oracle Learning. Inoltre, visitare education.oracle.com/learning-explorer per diventare Oracle Learning Explorer.
Per la documentazione del prodotto, visitare Oracle Help Center.
Set up Oracle Cloud Infrastructure Container Engine for Kubernetes with Three Worker Nodes
F95674-02