Observação:
- Este tutorial requer acesso ao Oracle Cloud. Para se cadastrar em uma conta gratuita, consulte Conceitos básicos do Oracle Cloud Infrastructure Free Tier.
- Ele usa valores de exemplo para credenciais, tenancy e compartimentos do Oracle Cloud Infrastructure. Ao concluir seu laboratório, substitua esses valores por valores específicos do seu ambiente de nuvem.
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.
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
- Veremos como podemos verificar o plug-in CNI padrão usado pelo OKE. Implantaremos um novo aplicativo conteinerizado Nginx para testar alguns recursos básicos de rede do plug-in CNI nativo da VCN do OCI padrão e aproveitaremos o plug-in CNI de Rede de Pods Nativos da VCN do OCI para criar um novo serviço de rede do tipo balanceador de carga e expor esse serviço ao nosso aplicativo Nginx implantado. No final, limparemos o aplicativo e o serviço do balanceador de carga.
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:
-
Exemplo 1: Cluster com Plug-in CNI de Flannel, Ponto Final Público de API do Kubernetes, Nós de Trabalho Privados e Balanceadores de Carga Públicos.
-
Exemplo 2: Cluster com Plug-in CNI de Flannel, Ponto Final Privado de API do Kubernetes, Nós de Trabalho Privados e Balanceadores de Carga Públicos.
-
Exemplo 3: Cluster com Plug-in OCI CNI, Ponto Final Público de API do Kubernetes, Nós de Trabalho Privados e Balanceadores de Carga Públicos.
-
Exemplo 4: Cluster com Plug-in OCI CNI, Ponto Final Privado de API do Kubernetes, Nós de Trabalho Privados e Balanceadores de Carga Públicos.
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.
-
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)$
-
Observe que o nome é
vcn-native
na saída na seção do pod. -
Observe que o nome é
vcn-native
na saída na seção daemonset.
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.
-
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
-
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)$
-
Observe que o aplicativo é implantado usando dois pods.
-
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)$
-
Observe que há duas instâncias ou pods ou réplicas do aplicativo Nginx e o status está definido como RUNNING.
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.
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.
-
Verifique os serviços em execução existentes no cluster do Kubernetes.
-
Execute o comando a seguir para revisar os serviços em execução existentes no cluster do Kubernetes.
iwan_hooge@cloudshell:~ (eu-amsterdam-1)$ kubectl get services NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP,12250/TCP 2d23h iwan_hooge@cloudshell:~ (eu-amsterdam-1)$
-
Observe que o único serviço em execução pertence ao plano de controle do Kubernetes.
-
-
Adicione o serviço de rede ao aplicativo.
-
Execute o comando a seguir para implantar um novo serviço de rede de plug-in CNI de Rede de Pods Nativos da VCN do OCI do tipo balanceador de carga e exponha esse novo serviço ao aplicativo.
iwan_hooge@cloudshell:~ (eu-amsterdam-1)$ kubectl expose deployment nginx-deployment --type=LoadBalancer --name=my-service service/my-service exposed iwan_hooge@cloudshell:~ (eu-amsterdam-1)$
-
Observe que o serviço foi exposto com sucesso.
-
-
Verifique os serviços em execução existentes no cluster do Kubernetes.
-
Execute o comando a seguir para revisar os serviços em execução existentes no cluster do Kubernetes.
iwan_hooge@cloudshell:~ (eu-amsterdam-1)$ kubectl get services NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP,12250/TCP 2d23h my-service LoadBalancer 10.96.209.132 xxx.xxx.xxx.167 80:32291/TCP 53s iwan_hooge@cloudshell:~ (eu-amsterdam-1)$
-
Observe que o serviço que acabamos de configurar agora está na lista.
-
Observe que o
EXTERNAL-IP
(endereço IP público) que foi designado ao balanceador de carga termina com.167
. -
Clique no ícone de minimização para minimizar o OCI Cloud Shell.
-
-
Copie o endereço IP público e cole-o no navegador da Web. Agora podemos acessar o servidor Web Nginx implantado em um contêiner dentro do Oracle Cloud Infrastructure Container Engine for Kubernetes.
-
Também podemos dar uma olhada mais de perto no que está acontecendo em segundo plano usando a Console do OCI.
-
Clique em Rede.
-
Clique em Balanceadores de carga.
-
-
Clique em Balanceador de Carga.
- Observe que há um novo balanceador de carga implantado com o endereço IP público que termina com
.167
. - Clique no balanceador de carga.
- Observe que o balanceador de carga é ATIVO.
- Rolar para Baixo.
- Verifique os detalhes de configuração do balanceador de carga implantado.
- Clique em Restaurar para restaurar o OCI Cloud Shell.
- Observe que há um novo balanceador de carga implantado com o endereço IP público que termina com
Uma representação visual da implantação do balanceador de carga pode ser encontrada no diagrama a seguir. Concentre-se no balanceador de carga.
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.
-
Remover o serviço de balanceador de carga.
-
Execute o comando a seguir para excluir o serviço do balanceador de carga.
iwan_hooge@cloudshell:~ (eu-amsterdam-1)$ kubectl delete service my-service -n default service "my-service" deleted
-
Observe que o serviço do balanceador de carga foi excluído com sucesso.
-
Execute o comando a seguir para verificar se o serviço do balanceador de carga foi excluído.
iwan_hooge@cloudshell:~ (eu-amsterdam-1)$ kubectl get services NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP,12250/TCP 2d23h iwan_hooge@cloudshell:~ (eu-amsterdam-1)$
-
Observe que o serviço do balanceador de carga foi excluído.
-
-
Remova o aplicativo de amostra.
-
Execute o comando a seguir para recuperar os pods existentes.
iwan_hooge@cloudshell:~ (eu-amsterdam-1)$ kubectl get pods NAME READY STATUS RESTARTS AGE nginx-deployment-86dcfdf4c6-fdxgz 1/1 Running 0 36m nginx-deployment-86dcfdf4c6-fqrkh 1/1 Running 0 36m
-
Observe que o aplicativo Nginx ainda está em execução.
-
Execute o comando a seguir para excluir a implantação do aplicativo Nginx.
iwan_hooge@cloudshell:~ (eu-amsterdam-1)$ kubectl delete deployment nginx-deployment --namespace default deployment.apps "nginx-deployment" deleted
-
Execute o comando a seguir para recuperar os pods existentes novamente e verificar se a implantação foi excluída.
iwan_hooge@cloudshell:~ (eu-amsterdam-1)$ kubectl get pods No resources found in default namespace. iwan_hooge@cloudshell:~ (eu-amsterdam-1)$
-
Observe que o aplicativo Nginx foi excluído.
-
Clique no ícone de minimização para minimizar o OCI Cloud Shell.
- Observe que a Console do OCI exibirá uma mensagem informando que o balanceador de carga foi excluído.
- Clique em Fechar.
-
Observe que não há mais balanceador de carga implantado.
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.
Links Relacionados
Confirmação
- Autor - Iwan Hoogendoorn (Especialista em Rede OCI)
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.
Use OCI VCN-Native Pods Networking CNI Plugin to Provide Networking Services to Oracle Cloud Infrastructure Container Engine for Kubernetes
F95771-01
March 2024