Nota

Utilizza il plugin CNI di networking pod nativi VCN OCI per fornire servizi di networking a Oracle Cloud Infrastructure Container Engine for Kubernetes

Introduzione

Per impostazione predefinita, Oracle Cloud Infrastructure Container Engine for Kubernetes (OKE) utilizza il plugin CNI (VCN-Native Container Network Interface) di Oracle Cloud Infrastructure (OCI) per fornire funzioni di rete o di sicurezza per le applicazioni containerizzate. In questa esercitazione viene descritto come verificare il plugin CNI utilizzato e come utilizzare questo plugin CNI predefinito (plugin CNI nativo VCN OCI) per configurare un servizio OCI Load Balancer e collegarlo a un'applicazione in esecuzione all'interno di un contenitore.

immagine

Il vantaggio dell'utilizzo del plugin CNI di networking pod nativi VCN OCI è che i pod o i container riceveranno un indirizzo IP dalla subnet privata nella VCN. Ciò significa che i pod Kubernetes si trovano nella stessa rete delle VM (istanze) o dei nodi baremetal o di altri carichi di lavoro.

Obiettivi

Task 1: distribuire un cluster Kubernetes utilizzando OKE

Per ulteriori informazioni sui diversi modelli di distribuzione OKE che è possibile scegliere, vedere Esempio di configurazioni delle risorse di rete.

Di seguito sono riportati i modelli di distribuzione OKE di esempio.

Verrà selezionato il modello di distribuzione Esempio 3. Per ulteriori informazioni, consulta la sezione relativa all'impostazione di Oracle Cloud Infrastructure Container Engine for Kubernetes con tre nodi di lavoro.

Task 2: verificare il plugin CNI installato

Quando il cluster Kubernetes che utilizza OKE è completamente distribuito ed è possibile accedervi, è possibile eseguire il comando seguente.

  1. eseguire il comando seguente.

    iwan_hooge@cloudshell:~ (eu-amsterdam-1)$ **kubectl get all -n kube-system** 
    NAME                                      READY   STATUS    RESTARTS     AGE
    pod/coredns-64ffdf5cf7-lvrhq              1/1     Running   0            2d
    pod/coredns-64ffdf5cf7-rmxt8              1/1     Running   0            2d
    pod/coredns-64ffdf5cf7-vq76p              1/1     Running   0            2d
    pod/csi-oci-node-ghff6                    1/1     Running   0            2d
    pod/csi-oci-node-jrjpr                    1/1     Running   0            2d
    pod/csi-oci-node-r68qz                    1/1     Running   1 (2d ago)   2d
    pod/kube-dns-autoscaler-5bb955d5c-r2j2q   1/1     Running   0            2d
    pod/kube-proxy-5cznp                      1/1     Running   0            2d
    pod/kube-proxy-fddrd                      1/1     Running   0            2d
    pod/kube-proxy-sb769                      1/1     Running   0            2d
    pod/proxymux-client-7s7f9                 1/1     Running   0            2d
    pod/proxymux-client-lngrm                 1/1     Running   0            2d
    pod/proxymux-client-qxlf2                 1/1     Running   0            2d
    **pod/vcn-native-ip-cni-hkfjz               1/1     Running   0            2d
    pod/vcn-native-ip-cni-pdv4c               1/1     Running   0            2d
    pod/vcn-native-ip-cni-qfvk8               1/1     Running   0            2d**
    
    NAME               TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)                  AGE
    service/kube-dns   ClusterIP   10.96.5.5    <none>        53/UDP,53/TCP,9153/TCP   2d
    
    NAME                                      DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR                                 AGE
    daemonset.apps/csi-oci-node               3         3         3       3            3           <none>                                        2d
    daemonset.apps/kube-proxy                 3         3         3       3            3           beta.kubernetes.io/os=linux                   2d
    daemonset.apps/node-termination-handler   0         0         0       0            0           oci.oraclecloud.com/oke-is-preemptible=true   2d
    daemonset.apps/nvidia-gpu-device-plugin   0         0         0       0            0           <none>                                        2d
    daemonset.apps/proxymux-client            3         3         3       3            3           node.info.ds_proxymux_client=true             2d
    **daemonset.apps/vcn-native-ip-cni          3         3         3       3            3           <none>                                        2d**
    
    NAME                                  READY   UP-TO-DATE   AVAILABLE   AGE
    deployment.apps/coredns               3/3     3            3           2d
    deployment.apps/kube-dns-autoscaler   1/1     1            1           2d
    
    NAME                                            DESIRED   CURRENT   READY   AGE
    replicaset.apps/coredns-64ffdf5cf7              3         3         3       2d
    replicaset.apps/kube-dns-autoscaler-5bb955d5c   1         1         1       2d
    iwan_hooge@cloudshell:~ (eu-amsterdam-1)$ 
    
  2. Si noti che il nome è vcn-native nell'output nella sezione pod.

  3. Si noti che il nome è vcn-native nell'output della sezione del daemonet.

immagine

Verrà visualizzato che il plugin CNI di networking pod VCN nativi OCI è attualmente utilizzato per questa distribuzione OKE distribuita.

Task 3: Distribuzione di un'applicazione di esempio

Questa applicazione di esempio verrà utilizzata insieme al plugin CNI di networking pod VCN nativi OCI e abiliterà il tipo di servizio OCI Load Balancer nel task successivo.

  1. Eseguire il comando seguente per distribuire un'applicazione Nginx di esempio in OKE.

    iwan_hooge@cloudshell:~ (eu-amsterdam-1)$ kubectl apply -f https://k8s.io/examples/application/deployment.yaml 
    deployment.apps/nginx-deployment created
    
  2. Eseguire il comando seguente per verificare i dettagli dell'applicazione Nginx di esempio distribuita.

    iwan_hooge@cloudshell:~ (eu-amsterdam-1)$ kubectl describe deployment nginx-deployment
    Name:                   nginx-deployment
    Namespace:              default
    CreationTimestamp:      Fri, 08 Mar 2024 07:57:02 +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-86dcfdf4c6 (2/2 replicas created)
    Events:
      Type    Reason             Age   From                   Message
      ----    ------             ----  ----                   -------
      Normal  ScalingReplicaSet  14s   deployment-controller  Scaled up replica set nginx-deployment-86dcfdf4c6 to 2
    iwan_hooge@cloudshell:~ (eu-amsterdam-1)$
    
  3. Si noti che l'applicazione viene distribuita utilizzando due pod.

immagine

  1. Eseguire il comando seguente per esaminare più da vicino i pod distribuiti.

    iwan_hooge@cloudshell:~ (eu-amsterdam-1)$ kubectl get pods
    NAME                                READY   STATUS    RESTARTS   AGE
    nginx-deployment-86dcfdf4c6-fdxgz   1/1     Running   0          3m46s
    nginx-deployment-86dcfdf4c6-fqrkh   1/1     Running   0          3m46s
    iwan_hooge@cloudshell:~ (eu-amsterdam-1)$ 
    
  2. Si noti che esistono due istanze, due pod o repliche dell'applicazione Nginx e che lo stato è impostato su RUNNING.

immagine

Nel diagramma seguente è possibile trovare una rappresentazione visiva della distribuzione. Concentrati sui due pod distribuiti all'interno dei nodi di lavoro.

immagine

Il vantaggio di utilizzare il plugin CNI di networking pod nativi VCN OCI è che i pod o i container riceveranno un indirizzo IP dalla subnet privata nella VCN. Ciò significa che i pod Kubernetes si trovano nella stessa rete delle VM (istanze) o dei nodi baremetal o di altri carichi di lavoro.

Task 4: configurare i servizi Kubernetes del tipo di load balancer

Abbiamo la nostra applicazione di esempio in esecuzione all'interno di OKE, è il momento di esporre l'applicazione alla rete o a Internet collegando un servizio di rete di tipo load balancer all'applicazione.

Nel diagramma riportato di seguito è possibile trovare una rappresentazione visiva della distribuzione del load balancer. Concentrati sul load balancer.

immagine

Task 5: rimuovere l'applicazione di esempio e i servizi Kubernetes del tipo di load balancer

Abbiamo distribuito un'applicazione di esempio e creato un nuovo servizio di rete Kubernetes di tipo load balancer. È ora di eseguire il cleanup dell'applicazione e del servizio.

Si noti che non è più distribuito alcun load balancer.

immagine

Nel diagramma riportato di seguito è possibile trovare una rappresentazione visiva dell'eliminazione del load balancer. Concentrati sulla parte in cui il load balancer non viene più distribuito.

immagine

Conferme

Altre risorse di apprendimento

Esplora altri laboratori su docs.oracle.com/learn o accedi a più contenuti gratuiti sulla formazione su Oracle Learning YouTube channel. Inoltre, visita education.oracle.com/learning-explorer per diventare un Oracle Learning Explorer.

Per la documentazione del prodotto, visita l'Oracle Help Center.