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.
Configurar o Oracle Cloud Infrastructure Container Engine for Kubernetes com Três Nós de Trabalho
Introdução
Neste tutorial, explicaremos como configurar um cluster do Kubernetes que consiste no plano de controle do Kubernetes e no plano de dados (pool de nós) usando o Oracle Cloud Infrastructure Container Engine for Kubernetes (OKE). Também implantaremos e excluiremos dois aplicativos de amostra na plataforma Kubernetes para provar que ela funciona. Este tutorial definirá o cenário para futuros tutoriais que se aprofundarão nos serviços de rede oferecidos no Kubernetes para aplicativos hospedados em contêineres.
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.
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.
Neste tutorial, implementaremos o modelo de implantação do Exemplo 3.
Objetivos
- Implantaremos um cluster de controle do Kubernetes e nós de trabalho totalmente implantados e configurados dentro da Oracle Cloud Infrastructure (OCI). Isso é o que chamamos de Oracle Cloud Infrastructure Container Engine for Kubernetes (OKE). Implantaremos dois aplicativos de amostra em dois namespaces diferentes em que um aplicativo será implantado usando um gráfico Helm em um novo namespace. No final, vamos limpar os aplicativos ou pods. Não implantaremos serviços de rede para pods ou aplicativos operados pelo Kubernetes.
Tarefa 1: Criar um Novo Cluster do Kubernetes e Verificar os Componentes
-
Clique no menu hambúrguer.
- Clique em Serviços de Desenvolvedor.
- Clique em Clusters do Kubernetes (OKE).
-
Clique em Criar Cluster.
- Selecione Criação rápida.
- Clique em Submeter.
-
Na página Criar cluster (rápido), digite as informações a seguir.
- Digite um Nome de cluster.
- Selecione um Compartimento.
- Selecione a versão do Kubernetes.
- Selecione o ponto final da API do Kubernetes para ser um ponto final público.
- Selecione o Tipo de Nó a ser Gerenciado.
- Rolar para Baixo.
- Selecione os Nós de trabalho do Kubernetes para serem Trabalhadores privados.
- Rolar para Baixo.
- Mantenha o padrão Contagem de nós (nós de trabalho) 3.
- Clique em Próximo.
- Revise os parâmetros de cluster.
- Rolar para Baixo.
- Revise os parâmetros de pools de nós.
- Rolar para Baixo.
- Não marque a caixa de seleção Criar um cluster Básico.
- Clique em Criar cluster.
-
Examinar o status dos diferentes componentes criados.
- Certifique-se de que tudo tenha um cheque verde.
- Clique em Fechar.
- Verifique se o status é CREATING.
- Rolar para Baixo.
-
Revise o status de criação do cluster e do pool de nós. O cluster de controle do Kubernetes está sendo criado e o pool de nós de trabalho será criado posteriormente.
-
Após alguns minutos, o cluster de controle do Kubernetes é criado com sucesso.
-
O pool de nós de trabalho será criado agora.
-
Após alguns minutos, o pool de nós de trabalho é criado com sucesso.
- Clique em Pools de Nós.
- Observe que os nós de trabalho no pool ainda estão sendo criados.
- Clique em 3 nós de trabalho.
-
Observe que todos os nós têm o status Não pronto.
-
Após alguns minutos, eles estarão Pronto.
O cluster de controle do Kubernetes e os nós de trabalho são totalmente implantados e configurados dentro da Oracle Cloud Infrastructure (OCI). Isso é o que chamamos de Oracle Cloud Infrastructure Container Engine for Kubernetes.
Tarefa 2: Verificar os Componentes do Cluster do Kubernetes Implantados na Console do OCI
Quando usarmos o OKE para criar um cluster do Kubernetes, alguns recursos serão criados no OCI para suportar essa implantação.
O primeiro e mais importante recurso é a rede virtual na nuvem (VCN). Como escolhemos a opção Criação Rápida, uma nova VCN dedicada ao OKE foi criada.
-
Faça log-in na Console do OCI e navegue até Networking, VCN (Redes Virtuais na Nuvem). Você verá a nova VCN que foi criada. Clique na VCN.
Dentro da VCN, você verá três sub-redes, uma privada e duas públicas, para suportar a implantação do OKE.
-
Verifique os recursos.
- Clique em Blocos/Prefixos CIDR para revisar o CIDR da VCN.
- Observe que
10.0.0.0/16
foi designado pelo OCI.
- Clique em Tabela de Roteamento para verificar as tabelas de roteamento.
- Observe que há duas tabelas de roteamento criadas: rota para sub-redes privadas e rota para sub-redes públicas.
- Clique em Gateways de Internet para revisar o gateway de internet que fornecerá conectividade com a internet usando as sub-redes públicas de/para a internet.
- Observe que há apenas um gateway de internet.
- Clique em Listas de Segurança para revisar as listas de segurança que podem ser regras de Entrada ou Saída para proteger a conectividade entre as sub-redes.
- Observe que há três listas de segurança, uma usada para proteção de conectividade do nó de trabalho do Kubernetes, a segunda usada para proteção de ponto final da API do Kubernetes e a terceira para proteção de serviços do Kubernetes.
- Clique em Gateways NAT para revisar o Gateway NAT que fornecerá conectividade com a internet usando as sub-redes privadas para a internet.
- Observe que há apenas um Gateway NAT.
- Clique em Gateways de Serviço para revisar o gateway de serviço que fornecerá acesso privado a serviços Oracle específicos, sem expor os dados a um gateway de internet ou gateway NAT.
- Observe que há apenas um gateway de serviço.
- Abra a Console do OCI, clique no menu de hambúrguer e navegue até Compute, Instances.
- Observe que três instâncias criadas serão usadas como os três nós de trabalho do Kubernetes que especificamos durante a implantação.
- Abra a Console do OCI, clique no menu de hambúrguer e navegue até IP Management, IPs públicos reservados.
- Observe que há um endereço IP público que termina com
.166
, reservado para o ponto final da API pública do Kubernetes.
Se colocarmos todas as informações que acabamos de coletar e colocá-las em um diagrama, o diagrama será semelhante ao mostrado na imagem a seguir.
-
Tabelas com Detalhes de Configuração para Implantar o OKE
-
VCN:
Recurso Nome VCN • Nome: oke-vcn-quick-IH-OKE-CLUSTER-af593850a
• Bloco CIDR: 10.0.0.0/16
• Resolução de DNS: SelecionadoGateway de Internet • Nome: oke-igw-quick-IH-OKE-CLUSTER-af593850a Gateway NAT • Nome: oke-ngw-quick-IH-OKE-CLUSTER-af593850a Gateway de Serviço • Nome: oke-sgw-quick-IH-OKE-CLUSTER-af593850a
• Serviços: Todos os Serviços da região no Oracle Services NetworkOpções de DHCP • Tipo de DNS definido como Resolvedor de Internet e VCN -
Sub-redes:
Recurso Exemplo Sub-rede Pública para Ponto Final da API do Kubernetes Finalidade: Ponto final da API do Kubernetes com as seguintes propriedades:
• Tipo: Regional
• Bloco CIDR: 10.0.0.0/28
• Tabela de Roteamento: oke-public-routetable-IH-OKE-CLUSTER-af593850a
• Acesso à Sub-rede: Público
• Resolução de DNS: Selecionado
• Opções de DHCP: Padrão
• Lista de Segurança: oke-k8sApiEndpoint-quick-IH-OKE-CLUSTER-af593850aSub-rede Privada para Nós de Trabalho Finalidade: nós de trabalho com as seguintes propriedades:
• Tipo: Regional
• Bloco CIDR: 10.0.10.0/24
• Tabela de Roteamento: N/A
• Acesso à Sub-rede: Privado
• Resolução de DNS: Selecionado
• Opções de DHCP: Padrão
• Lista de Segurança: oke-nodeseclist-quick-IH-OKE-CLUSTER-af593850aSub-rede Privada para Pods Finalidade: pods com as seguintes propriedades:
• Tipo: Regional
• Bloco CIDR: 10.96.0.0/16
• Tabela de Roteamento: oke-private-routetable-IH-OKE-CLUSTER-af593850a
• Acesso à Sub-rede: Privado
• Resolução de DNS: Selecionado
• Opções de DHCP: Padrão
• Lista de Segurança: N/ASub-rede Pública para Balanceadores de Carga de Serviço Finalidade: Balanceadores de carga com as seguintes propriedades:
• Tipo: Regional
• Bloco CIDR: 10.0.20.0/24
• Tabela de Roteamento: oke-private-routetable-IH-OKE-CLUSTER-af593850a
• Acesso à Sub-rede: Público
• Resolução de DNS: Selecionado
• Opções de DHCP: Padrão
• Lista de Segurança: oke-svclbseclist-quick-IH-OKE-CLUSTER-af593850a -
Tabelas de Rota:
Recurso Exemplo Tabela de Roteamento para Sub-rede Pública de Ponto Final da API do Kubernetes Finalidade: routetable-ponto final da API do Kubernetes, com uma regra de roteamento definida da seguinte forma:
• Bloco CIDR de destino: 0.0.0.0/0
• Tipo de Destino: Gateway de Internet
• Destino: oke-igw-quick-IH-OKE-CLUSTER-af593850aTabela de Roteamento para Sub-rede de Pods Privados Finalidade: routetable-pods, com duas regras de roteamento definidas da seguinte forma:
• Regra para tráfego para a internet:
◦ Bloco CIDR de destino: 0.0.0.0/0
◦ Tipo de Destino: Gateway NAT
◦ Destino: oke-ngw-quick-IH-OKE-CLUSTER-af593850a
• Regra para tráfego para serviços do OCI:
Destino: Todos os Serviços da região na Oracle Services Network
◦ Tipo de Destino: Gateway de Serviço
Destino: oke-sgw-quick-IH-OKE-CLUSTER-af593850aTabela de Roteamento para Sub-rede Pública de Balanceadores de Carga Finalidade: routetable-serviceloadbalancers, com uma regra de roteamento definida da seguinte forma:
• Bloco CIDR de destino: 0.0.0.0/0
• Tipo de Destino: Gateway de Internet
• Destino: oke-igw-quick-IH-OKE-CLUSTER-af593850a
-
-
Regras de Lista de Segurança para Sub-rede Pública Kubernetes API Endpoint
A lista de segurança
oke-k8sApiEndpoint-quick-IH-OKE-CLUSTER-af593850a
tem as regras de entrada e saída, conforme mostrado nas tabelas a seguir.-
Regras de Entrada:
Sem Informações de Estado Origem Protocolo IP Faixa de Portas de Origem Faixa de Portas de Destino Tipo e Código Permite Descrição Nº 0.0.0.0/0 TCP Tudo 6,443 Tráfego TCP nas portas: 6443 Acesso externo ao ponto final da API do Kubernetes Nº 10.0.10.0/24 TCP Tudo 6,443 Tráfego TCP nas portas: 6443 Colaborador do Kubernetes para comunicação do ponto final da API do Kubernetes Nº 10.0.10.0/24 TCP Tudo 12,250 Tráfego TCP nas portas: 12250 Colaborador do Kubernetes para a comunicação do plano de controle Nº 10.0.10.0/24 ICMP 3 4 Tráfego de ICMP para: 3, 4 Destino Inacessível: Fragmentação Necessária e Não Fragmentar foi Definido Descoberta de caminho -
Regras de Saída:
Sem Informações de Estado Destino Protocolo IP Faixa de Portas de Origem Faixa de Portas de Destino Tipo e Código Permite Descrição Nº Todos os Serviços AMS no Oracle Services Network TCP Tudo 443 Tráfego TCP nas portas: 443 HTTPS Permitir que o Plano de Controle do Kubernetes se comunique com o OKE Nº 10.0.10.0/24 TCP Tudo Tudo Tráfego TCP nas portas: Todas Todo o tráfego para nós de trabalho Nº 10.0.10.0/24 ICMP 3 4 Tráfego de ICMP para: 3, 4 Destino Inacessível: Fragmentação Necessária e Não Fragmentar foi Definido Descoberta de caminho
-
-
Regras de Lista de Segurança para Sub-rede Privada de Nós de Trabalho
A lista de segurança
oke-nodeseclist-quick-IH-OKE-CLUSTER-af593850a
tem as regras de entrada e saída, conforme mostrado nas tabelas a seguir.Regras de Entrada:
Sem Informações de Estado Origem Protocolo IP Faixa de Portas de Origem Faixa de Portas de Destino Tipo e Código Permite Descrição Nº 10.0.10.0/24 Todos os Protocolos Todo tráfego em todas as portas Permita que pods em um nó de trabalho se comuniquem com pods em outros nós de trabalho Nº 10/28 ICMP 3 4 Tráfego de ICMP para: 3, 4 Destino Inacessível: Fragmentação Necessária e Não Fragmentar foi Definido Descoberta de caminho Nº 10/28 TCP Tudo Tudo Tráfego TCP nas portas: Todas Acesso TCP do Plano de Controle do Kubernetes Nº 0.0.0.0/0 TCP Tudo 22 Tráfego TCP nas portas: 22 Protocolo de Log-in Remoto SSH Tráfego SSH de entrada para nós de trabalho Nº 10/24 TCP Tudo 32,291 Tráfego TCP nas portas: 32291 Nº 10/24 TCP Tudo 10,256 Tráfego TCP nas portas: 10256 Nº 10/24 TCP Tudo 31,265 Tráfego TCP nas portas: 31265 Regras de Saída:
Sem Informações de Estado Destino Protocolo IP Faixa de Portas de Origem Faixa de Portas de Destino Tipo e Código Permite Descrição Nº 10.0.10.0/24 Todos os Protocolos Todo tráfego em todas as portas Permita que pods em um nó de trabalho se comuniquem com pods em outros nós de trabalho Nº 10/28 TCP Tudo 6,443 Tráfego TCP nas portas: 6443 Acesso ao Ponto Final da API do Kubernetes Nº 10/28 TCP Tudo 12,250 Tráfego TCP nas portas: 12250 Colaborador do Kubernetes para a comunicação do plano de controle Nº 10/28 ICMP 3 4 Tráfego de ICMP para: 3, 4 Destino Inacessível: Fragmentação Necessária e Não Fragmentar foi Definido Descoberta de caminho Nº Todos os Serviços AMS no Oracle Services Network TCP Tudo 443 Tráfego TCP nas portas: 443 HTTPS Permitir que os nós se comuniquem com o OKE para garantir a inicialização correta e o funcionamento contínuo Nº 0.0.0.0/0 ICMP 3 4 Tráfego de ICMP para: 3, 4 Destino Inacessível: Fragmentação Necessária e Não Fragmentar foi Definido Acesso ICMP do Plano de Controle do Kubernetes Nº 0.0.0.0/0 Todos os Protocolos Todo tráfego em todas as portas Acesso dos Nós de Trabalho à Internet -
Regras de Lista de Segurança para Sub-rede Pública de Balanceadores de Carga
A lista de segurança
oke-svclbseclist-quick-IH-OKE-CLUSTER-af593850a
tem as regras de entrada e saída, conforme mostrado nas tabelas a seguir.-
Regras de Entrada:
Sem Informações de Estado Origem Protocolo IP Faixa de Portas de Origem Faixa de Portas de Destino Tipo e Código Permite Descrição Nº 0.0.0.0/0 TCP Tudo 80 Tráfego TCP nas portas: 80 -
Regras de Saída:
Sem Informações de Estado Destino Protocolo IP Faixa de Portas de Origem Faixa de Portas de Destino Tipo e Código Permite Descrição Nº 10.0.10.0/24 TCP Tudo 32,291 Tráfego TCP nas portas: 32291 Nº 10.0.10.0/24 TCP Tudo 10,256 Tráfego TCP nas portas: 10256 Nº 10.0.10.0/24 TCP Tudo 31,265 Tráfego TCP nas portas: 31265
-
Tarefa 3: Verificar se o Cluster do Kubernetes está em Execução usando a CLI
-
Abra a Console do OCI, clique no menu de hambúrguer e navegue até Developer Services, Kubernetes Clusters (OKE). Clique no cluster do Kubernetes criado na Tarefa 1.
- Rolar para Baixo.
- Clique em Início Rápido.
-
Clique em Acessar Cluster.
- Selecione Acesso do Cloud Shell.
- Clique em Copiar para copiar o comando para permitir o acesso ao cluster do Kubernetes.
- Clique em Iniciar Cloud Shell.
O diagrama a seguir mostra como a conexão será feita para executar o gerenciamento no cluster do OKE usando o OCI Cloud Shell.
-
O OCI Cloud Shell será iniciado.
Algumas mensagens informativas serão mostradas sobre o que está acontecendo em segundo plano.
Nesse caso, é possível permitir que o OCI Cloud Shell seja executado em diferentes arquiteturas de CPU.
-
Clique em Fechar para fechar esta mensagem informativa.
-
Estamos prontos para usar o OCI Cloud Shell para acessar o cluster do Kubernetes.
-
Cole o comando que foi copiado acima nesta tarefa.
-
Execute o comando a seguir para obter informações sobre o cluster do Kubernetes.
kubectl cluster-info
-
Execute o comando a seguir para obter informações sobre os nós de trabalho.
kubectl get nodes
-
Execute o comando a seguir para obter mais informações sobre os nós de trabalho.
kubectl get nodes -o wide
-
Execute o comando a seguir para limpar a tela e começar com uma nova tela.
clear
- Observe que a saída anterior foi limpa, mas ainda pode ser acessada quando você rola para cima.
- Clique no ícone de minimização para minimizar a janela do OCI Cloud Shell.
-
Clique em Fechar para fechar a janela Acessar Seu Cluster.
A conexão é feita para executar o gerenciamento no cluster do OKE usando o OCI Cloud Shell.
Tarefa 4: Implantar um Aplicativo Nginx de Amostra usando kubectl
-
Execute os comandos a seguir.
- Anote o comando para obter a versão do Kubernetes.
- Anote o comando para implantar um aplicativo de amostra.
- Clique em Restaurar para restaurar a janela do OCI Cloud Shell.
-
Execute o comando a seguir para obter a versão do Kubernetes.
kubectl version
-
Execute o comando a seguir para verificar os pods ou aplicativos atuais implantados.
kubectl get pods
Observe que não há recursos encontrados.
-
Execute o comando a seguir para implantar um novo aplicativo de amostra.
kubectl create -f https://k8s.io/examples/application/deployment.yaml
-
Execute o comando a seguir para verificar os pods ou aplicativos atuais implantados.
kubectl get pods
-
Observe que há pods no estado RUNNING. Isso significa que o aplicativo que acabamos de implantar está em execução.
-
Execute o comando a seguir para obter os endereços IP para acessar o aplicativo.
kubectl get deploy,svc
-
Observe que o aplicativo recém-implantado não tem endereços IP designados e que apenas o cluster do Kubernetes tem um serviço IP de cluster anexado a ele com um endereço IP interno.
-
Execute o comando a seguir para verificar os serviços (rede) anexados especificamente para o aplicativo recém-implantado.
kubectl get svc ngnix
-
Observe que não há serviços (de rede) implantados ou anexados ao aplicativo Nginx implantado. Por esse motivo, não poderemos acessar o aplicativo de outro aplicativo ou usar o navegador da Web para acessar a página da Web no servidor da Web Nginx. Vamos discutir isso em outro tutorial.
Tarefa 5: Implantar um Aplicativo de Amostra MySQL usando o Gráfico Helm
-
Um gráfico Helm é um pacote que contém todos os recursos necessários para implantar um aplicativo em um cluster do Kubernetes. Execute estes comandos para:
-
Adicione o repositório Bitnami para o banco de dados MySQL.
helm repo add bitnami https://charts.bitnami.com/bitnami
-
Implante um banco de dados MySQL nos nós de trabalho do Kubernetes e também crie um novo namespace mysql.
helm install mysql bitnami/mysql -–namespace mysql --create-namespace
-
-
Para obter os aplicativos implantados, execute o comando a seguir. Este comando só exibirá os aplicativos implantados no namespace (padrão) atual.
kubectl get pods
-
Observe que somente o aplicativo Nginx está aparecendo no namespace (padrão) atual. Este comando agora exibirá os aplicativos implantados em todo o cluster (todos os namespaces).
kubectl get pods -A -w
- Observe que o aplicativo Nginx está em execução no namespace padrão.
- Observe que o aplicativo MySQL está em execução no novo namespace mysql.
Tarefa 6: Limpar os Pods e Namespaces
Implantamos um aplicativo no namespace padrão (Nginx) e outro aplicativo em um novo namespace (MySQL). Usando gráficos Helm, vamos limpar o ambiente para que possamos começar de novo sempre que precisarmos.
-
Use o comando a seguir para obter todos os nós de trabalho (em todo o cluster).
kubectl get nodes -o wide
-
Use o comando a seguir para obter todos os pods em execução no namespace (padrão) atual.
kubectl get pods -o wide
-
Execute o comando a seguir para obter todos os namespaces.
kubectl get namespaces
-
Execute o comando a seguir para obter todos os pods em execução no namespace (padrão) atual especificamente.
kubectl get pods --namespace=default
-
Execute o comando a seguir para obter todos os pods em execução no namespace MySQL especificamente.
kubectl get pods --namespace=mysql
-
Execute o comando a seguir para excluir todas as implantações ou pods no namespace padrão.
kubectl delete --all deployments --namespace=default
-
Use o comando a seguir para verificar se as implantações ou pods foram excluídos.
kubectl get pods --namespace=default
-
Use o comando a seguir para obter todos os pods em execução no namespace MySQL especificamente. Apenas verifique se isso ainda existe.
kubectl get pods --namespace=mysql
-
Execute o comando a seguir para excluir todas as implantações ou pods e o namespace MySQL completo.
kubectl delete namespace mysql
-
Use esse comando para reunir todos os namespaces e verificar se o namespace MySQL foi excluído.
kubectl get namespaces
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.
Set up Oracle Cloud Infrastructure Container Engine for Kubernetes with Three Worker Nodes
F95677-01
March 2024