Observação:

Use o Plug-in CNI de Rede de Pods Nativos da VCN do OCI para Fornecer Serviços de Rede ao Oracle Cloud Infrastructure Container Engine for Kubernetes

Introdução

Por padrão, o Oracle Cloud Infrastructure Container Engine for Kubernetes (OKE) usa o plug-in Oracle Cloud Infrastructure (OCI) VCN-Native Container Network Interface (CNI) para fornecer recursos de rede ou segurança a aplicativos em contêineres. Neste tutorial, mostraremos como você pode verificar qual plug-in CNI é usado e como podemos usar esse plug-in CNI padrão (plug-in CNI nativo da VCN do OCI) para configurar um serviço do Balanceador de Carga do OCI e anexá-lo a um aplicativo em execução dentro de um contêiner.

image

O benefício de usar o Plug-in CNI de Rede de Pods Nativos da VCN do OCI é que os pods ou contêineres obterão um endereço IP da sub-rede privada na VCN. Isso significa que seus pods do Kubernetes estão na mesma rede que suas VMs (instâncias) ou seus nós baremetal ou outras cargas de trabalho.

Objetivos

Tarefa 1: Implantar um Cluster do Kubernetes usando o OKE

Para obter mais informações sobre os diferentes modelos de implantação do OKE que podemos escolher, consulte Exemplo de Configurações de Recursos de Rede.

Os exemplos de modelos de implantação do OKE são:

Selecionaremos o modelo de implantação do Exemplo 3. Para obter mais informações, consulte Configurar o Oracle Cloud Infrastructure Container Engine for Kubernetes com Três Nós de Trabalho.

Tarefa 2: Verificar o plug-in CNI instalado

Quando o cluster do Kubernetes que usa o OKE estiver totalmente implantado e você tiver acesso a isso, poderá executar o comando a seguir.

  1. Execute o seguinte comando.

    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. Observe que o nome é vcn-native na saída na seção do pod.

  3. Observe que o nome é vcn-native na saída na seção daemonset.

image

Isso mostrará que o plug-in CNI de Rede de Pods Nativos da VCN do OCI está sendo usado no momento para essa implantação implantada do OKE.

Tarefa 3: Implantar um Aplicativo de Amostra

Usaremos esse aplicativo de amostra junto com o plug-in CNI de Rede de Pods Nativos da VCN do OCI e ativaremos o tipo de serviço do Balanceador de Carga do OCI na próxima tarefa.

  1. Execute o comando a seguir para implantar um aplicativo Nginx de amostra no OKE.

    iwan_hooge@cloudshell:~ (eu-amsterdam-1)$ kubectl apply -f https://k8s.io/examples/application/deployment.yaml 
    deployment.apps/nginx-deployment created
    
  2. Execute o comando a seguir para verificar os detalhes do aplicativo Nginx de amostra implantado.

    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. Observe que o aplicativo é implantado usando dois pods.

image

  1. Execute o comando a seguir para dar uma olhada mais de perto nos pods implantados.

    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. Observe que há duas instâncias ou pods ou réplicas do aplicativo Nginx e o status está definido como RUNNING.

image

Uma representação visual da implantação pode ser encontrada no diagrama a seguir. Concentre-se nos dois pods implantados dentro dos nós de trabalho.

image

O benefício de usar o plug-in CNI de Rede de Pods Nativos da VCN do OCI é que os pods ou contêineres obterão um endereço IP da sub-rede privada na VCN. Isso significa que seus pods do Kubernetes estão na mesma rede que suas VMs (instâncias) ou seus nós baremetal ou outras cargas de trabalho.

Tarefa 4: Configurar Serviços do Kubernetes do Tipo de Balanceador de Carga

Temos nosso aplicativo de amostra em execução no OKE. É hora de expor o aplicativo à rede ou à internet, anexando um serviço de rede do tipo balanceador de carga ao aplicativo.

Uma representação visual da implantação do balanceador de carga pode ser encontrada no diagrama a seguir. Concentre-se no balanceador de carga.

image

Tarefa 5: Remover o Aplicativo de Amostra e os Serviços do Kubernetes do Tipo de Balanceador de Carga

Implementamos um aplicativo de amostra e criamos um novo serviço de rede do Kubernetes do tipo balanceador de carga. É hora de limpar o aplicativo e o serviço.

Observe que não há mais balanceador de carga implantado.

image

Uma representação visual da exclusão do balanceador de carga pode ser encontrada no diagrama a seguir. Concentre-se na parte em que o balanceador de carga não está mais implantado.

image

Confirmação

Mais Recursos de Aprendizagem

Explore outros laboratórios em docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal Oracle Learning YouTube. Além disso, visite education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.

Para obter a documentação do produto, visite o Oracle Help Center.