Observação:
- Este tutorial requer acesso ao Oracle Cloud. Para se inscrever 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.
Gerenciar o OCI Kubernetes Engine com Diferentes Tipos de Capacidade e Resolver Problemas Comuns em Nós Preemptíveis
Introdução
À medida que continuamos em cada ciclo de transformação digital, as empresas continuam inovando e iterando, ultrapassando os limites do que é possível para infraestrutura, aplicações e gerenciamento em escala. Uma das tecnologias mais recentes e amplamente adotadas usadas para oferecer suporte ao gerenciamento de infraestrutura e aplicações é o Kubernetes. Antes de mergulhar ainda mais no Kubernetes, devemos primeiro olhar para o conceito de contêineres.
Os contêineres são um pacote de software que inclui um conjunto de códigos específicos do aplicativo, juntamente com as bibliotecas de tempo de execução e programa necessárias para suportar a execução confiável de um aplicativo. OS contêineres são configurados para serem executados dentro de um espaço do usuário dentro do Sistema Operacional (SO) do servidor subjacente. Essa arquitetura permite o desacoplamento dos serviços principais e a implantação leve de dependências de um aplicativo. Os benefícios da conteinerização de aplicativos incluem melhorias no isolamento da carga de trabalho, eficiência de recursos, escalabilidade e tolerância a falhas.
Para aproveitar a potência e a eficiência dos contêineres em escala, precisamos de algum tipo de ferramentas para interagir ou gerenciar nossas implementações baseadas em contêiner. O Kubernetes, também conhecido como K8s, é uma ferramenta de orquestração de contêiner de código aberto que automatiza a implantação de contêiner criando um cluster de servidores para os quais os contêineres podem ser executados, dimensionados e entregues aos seus usuários. A arquitetura de cluster do Kubernetes inclui um nó mestre (plano de controle) e vários nós de trabalho. Cada worker hospeda um pod/s (coleção de contêineres) que entrega seu aplicativo.
Objetivos
- Trabalhe com o Oracle Cloud Infrastructure Kubernetes Engine (OCI Kubernetes Engine ou OKE) para diferentes tipos de capacidade e resolva problemas comuns em preemptível.
Pré-requisitos
- Acesso do administrador a uma tenancy do OCI e a um Cluster do OKE em execução.
Como a Oracle Está Posicionada com a Tecnologia de Contêiner?
O OKE é um serviço Kubernetes totalmente gerenciado, escalável e altamente disponível que ajuda os clientes a implementar aplicativos em contêineres na nuvem. O OKE oferece aos clientes da OCI a capacidade de otimizar a utilização de recursos de computação para atender aos requisitos exclusivos de carga de trabalho e se adaptar rapidamente à medida que os requisitos de carga de trabalho mudam. O OKE oferece uma experiência perfeita ao cliente, oferecendo aos clientes desempenho de preço, eficiência de recursos, portabilidade e confiabilidade incomparáveis. O OKE fornece várias integrações importantes com vários produtos de gerenciamento do ciclo de vida do contêiner, incluindo registros de contêiner, estruturas de CI/CD, soluções de rede, opções de armazenamento e recursos de segurança de alto nível.
No OKE, você pode especificar o tipo de cluster como clusters básicos ou aprimorados. Os clusters básicos suportam todas as funcionalidades básicas fornecidas pelo OKE. Para ativar outros recursos, os clusters aprimorados suportam todos os recursos disponíveis, incluindo nós virtuais, nós autogerenciados, gerenciamento de complementos de cluster, configurações mais granulares do Oracle Cloud Infrastructure Identity and Access Management (OCI IAM) e assim por diante.
OKE em Diferentes Tipos de Capacidade
-
Capacidade On-Demand: A capacidade on-demand é a capacidade disponível padrão de um determinado tipo de forma. Esse é o tipo de capacidade padrão e paga efetivamente pelo que você usa. Embora essa seja a escolha padrão, dependendo do tipo de forma e do tempo, pode haver dificuldade em atender a essas solicitações para grandes cargas de trabalho de várias instâncias.
-
Capacidade Reservada: As reservas de capacidade podem ser usadas para provisionar nós gerenciados do OKE. As reservas de capacidade geralmente são usadas para garantir capacidade suficiente disponível para cargas de trabalho críticas para os negócios durante eventos de impacto na produção, incluindo manutenção planejada, crescimento da demanda do usuário e recuperação de desastres. As reservas de capacidade incorrem em um custo de 85% do preço da lista de SKU, enquanto os recursos reservados não estão sendo usados ativamente. Para aproveitar uma reserva de capacidade, primeiro crie o objeto de reserva de capacidade e especifique a região/domínio de disponibilidade junto com o tipo e o tamanho da forma. Quando sua reserva de capacidade tiver sido criada, você poderá especificar a reserva específica como o tipo de capacidade ao implantar nós em seu pool de nós.
-
Capacidade Preemptível: Os nós gerenciados do OKE agora podem ser provisionados com formas de computação preemptíveis. As formas previsíveis podem ser uma fonte de economia de custos (50% de desconto no preço de lista de SKU), no entanto, a Oracle mantém o direito de recuperar esses recursos de computação se/quando necessário para uma demanda de maior prioridade. A computação preemptível pode ser uma boa opção se você tiver cargas de trabalho tolerantes a falhas sem monitoramento de estado que possam resistir à interrupção. Para visibilidade, você pode optar por ser notificado quando uma instância for encerrada ao implantar computação preemptível. No cluster do OKE, o estado esperado do pool de nós tentará iniciar uma nova(s) instância(s) para substituir a(s) instância(s) reivindicada(s).
Implantação do OKE com Pools de Nós Preemptíveis e OnDemand
Problemas Conhecidos com Preemptível
Existem alguns problemas conhecidos ao usar o preemptible com o OKE.
-
Problema: Alguns clientes obtêm o erro NonRetryable BmcException: Erro retornado pela operação LaunchInstance no serviço Compute. (400, InvalidParameter, false) Não é possível iniciar uma instância preemptível com um id de reserva de capacidade ao criar as formas preemptíveis E3/E4.
- Solução: Há um bug conhecido do OKE com nós de trabalho preemptíveis e
<capacityreservationId>
vazios. Se você tentar usar a capacidade preemptível ao criar um pool de nós por meio da CLI do OCI (Interface de Linha de Comando) ou terraform do Oracle Cloud Infrastructure sem informar o parâmetro<capacityReservationId>
como parte da seção de configuração de posicionamento, os nós de trabalho preemptíveis poderão ser criados. No entanto, se você criar o pool de nós por meio da console, um<capacityReservationId>
vazio será informado por padrão, o que gerará um erro ao tentar usar formas preemptíveis. A solução alternativa é definir explicitamente<capacityReservationId>
como nulo na configuração de posicionamento.
- Solução: Há um bug conhecido do OKE com nós de trabalho preemptíveis e
-
Problema: Quando você usa dois pools de nós (um usando preemptível, o outro usando sob demanda) e aproveita expansores baseados em prioridade para o dimensionador automático. Configuração do pool de nós preemptível como prioridade mais alta, conjunto de pools de nós sob demanda a ser usado se o pool de nós preemptível mostrar problemas devido a um erro OutOfHostCapacity com capacidade preemptível. Em alguma instância, o dimensionador automático do cluster não faz fallback para o pool de nós sob demanda, mesmo que o pool de nós preemptível não esteja íntegro se o pool de nós tiver 0 nó.
- Solução: Esta configuração funcionará, mas somente quando ambos os pools de nós tiverem no mínimo 1 nó cada.
-
Problema: Ao selecionar a capacidade preemptível no assistente de provisionamento do OKE por meio da console, as formas AMD disponíveis são limitadas a E3 e E4. E5 não é mostrado lá; no entanto, há suporte para a capacidade preemptível E5 no OKE.
-
Solução: Crie pools de nós gerenciados com a forma E5 preemptível usando a API ou a CLI.
--node-shape VM.Standard.E5.Flex
-
Tarefa 1: Etapas para Criar um Pool de Nós de Trabalho Preemptível do OKE E5 usando a CLI (Command Line Interface)
-
Faça log-in na Console do OCI e clique no menu de serviços.
-
Navegue até Developer Services.
-
Em Contêineres e Artefatos, clique em Clique em Kubernetes Engine (OKE).
-
Clique em OCI Cloud Shell para exibir a CLI.
-
Edite o OCID de
node-pool
, o OCID decompartment
,subnet-id
,fault domain
, a configuração e o tamanho antes de executar os comandos da CLI a seguir em sua tenancy.oci ce node-pool create --cluster-id ocid1.cluster.oc1.iad.aaaaaaaaxlokvt2r25b6dmdxxxxxxxxxxxxxxxxxkhdilj7kpehc5vke2ve5gq --compartment-id ocid1.compartment.oc1..aaaaaaaaqufgrkgzr4zb3dxxxxxxxxxxxxxxxxxxp7jx7yckglghxppfrui6a --name E5_Preemtible --node-shape VM.Standard.E5.Flex --placement-configs '[{"availabilityDomain": "FZyT:US-ASHBURN-AD-2", "preemptibleNodeConfig": {"preemptionAction":{"isPreserveBootVolume":true, "type": "TERMINATE"}}, "subnet-id": "ocid1.subnet.oc1.iad.aaaaaaaapmekowq4rqhu72xxxxxxxxxxxxxxxxxxxxtlkp4dmixebzhgrwdlmtteclq", "faultDomains":["FAULT-DOMAIN-1"]}]' --size 1 --node-image-id ocid1.image.oc1.iad.aaaaaaaajvtta4i5sq4xxxxxxxxxxxxxcskfxjwz4vwxz6ersmmax6q --node-shape-config '{"memoryInGBs": 6.0, "ocpus": 1.0}' --pod-subnet-ids '["ocid1.subnet.oc1.iad.aaaaaaaapmekowq4rqhxxxxxxxxxxxxxxxkp4dmixebzhgrwdlmtteclq"]'
Isso produzirá o OCID da solicitação de serviço para criar o pool de nós e criará o nó de trabalho preemptível E5 no cluster existente, conforme mostrado na imagem a seguir.
Links Relacionados
Confirmações
- Autors - Payal Sharma (Arquiteto Sênior de Nuvem Empresarial), Anthony Vernava IV (Arquiteto Sênior de Nuvem Empresarial)
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.
Manage OCI Kubernetes Engine with Different Capacity Types and Resolve Common Issues on Preemptible Nodes
G19916-01
November 2024