Usando a Capacidade Preemptível para Provisionar Nós de Trabalho
Descubra como especificar a capacidade preemptível para instâncias de computação que hospedam nós de trabalho nos pools de nós de clusters que você criou usando o Kubernetes Engine (OKE).
Ao usar o Kubernetes Engine para definir a configuração de posicionamento de um pool de nós, você pode especificar a capacidade preemptível como o tipo de capacidade para instâncias de computação que hospedam nós de trabalho no pool de nós. A especificação da capacidade preemptível permite economizar dinheiro usando instâncias preemptíveis para executar cargas de trabalho que só precisam ser executadas por curtos períodos ou que podem ser interrompidas quando a capacidade é recuperada.
As instâncias preemptíveis se comportam da mesma forma que as instâncias de computação regulares, mas a capacidade é reivindicada quando necessária em outro lugar e as instâncias são encerradas. Se as cargas de trabalho forem tolerantes a falhas e puderem suportar interrupções, as instâncias preemptíveis poderão reduzir custos. Por exemplo, você pode usar instâncias preemptíveis para otimizar os custos das cargas de trabalho que podem tolerar interrupções, como testes que podem ser interrompidos e retomados posteriormente. Para obter mais informações, consulte Instâncias Preemptíveis.
Quando uma instância preemptível que hospeda um nó de trabalho deve ser encerrada, o Kubernetes Engine é notificado. Antes de a instância do nó ser encerrada, o Kubernetes Engine:
- cordões do nó de trabalho para impedir que o kube-scheduler coloque novos pods nesse nó
- drena o nó de trabalho para expulsar pods com segurança, garantindo que os contêineres do pod sejam encerrados normalmente e executem qualquer limpeza necessária
Depois que uma instância preemptível que hospeda um nó de trabalho é encerrada, o Kubernetes Engine tenta criar uma nova instância preemptível como substituição. Se o Kubernetes Engine não conseguir criar uma instância preemptível de substituição após várias tentativas, uma mensagem será gerada.
Quando você escolhe capacidade preemptível como o tipo de capacidade para um pool de nós:
- O Kubernetes Engine adiciona automaticamente um label
oci.oraclecloud.com/oke-is-preemptible=true
do Kubernetes aos nós de trabalho hospedados em instâncias preemptíveis. Você pode usar o label com seletores de nó do Kubernetes e afinidade/antiafinidade de nó para controlar quais pods são programados nesses nós de trabalho. Consulte Designando Pods a Nós na documentação do Kubernetes. - O Kubernetes Engine adiciona automaticamente uma mancha do Kubernetes
oci.oraclecloud.com/oke-is-preemptible
aos nós de trabalho hospedados em instâncias preemptíveis. Você pode usar a mancha com tolerações do Kubernetes para controlar quais pods são programados nesses nós de trabalho. Consulte Taints and Tolerations na documentação do Kubernetes. - Você pode especificar se os volumes de inicialização anexados às instâncias preemptíveis que hospedam nós de trabalho serão excluídos permanentemente se as instâncias forem encerradas.
Observe o seguinte:
- Muitas, mas não todas, as formas de computação suportam instâncias previsíveis. Em particular, observe que instâncias preemptíveis não são suportadas por formas bare metal. Não será possível criar um pool de nós com um tipo de capacidade preemptível se a forma do pool de nós não suportar instâncias preemptíveis. Da mesma forma, não será possível alterar o tipo de capacidade de um pool de nós para capacidade preemptível se a forma do pool de nós não suportar instâncias preemptíveis.
- As instâncias preemptíveis têm uma série de limitações e restrições. Consulte Suporte e Limitações.
- As alterações feitas nas propriedades do nó de trabalho só se aplicam aos novos nós de trabalho. A atualização do tipo de capacidade associado a um pool de nós não afeta as propriedades dos nós de trabalho existentes.
Políticas Obrigatórias do Serviço IAM para Usar Capacidade Preemptível
As políticas que permitem criar instâncias usando o Kubernetes Engine também permitem criar instâncias preemptíveis. Consulte Configuração de Política para Criação e Implantação de Cluster
Melhores Práticas ao Usar a Capacidade Preemptível
Quando você escolher capacidade preemptível como o tipo de capacidade de um pool de nós, considere as seguintes melhores práticas:
- As instâncias preemptíveis são mais adequadas para cargas de trabalho conteinerizadas tolerantes a falhas. Ao projetar aplicativos que podem ser executados em instâncias preemptíveis, suponha que a capacidade preemptível possa ser reivindicada (e as instâncias preemptíveis encerradas) a qualquer momento.
- Use seletores de nó do Kubernetes e afinidade/antiafinidade de nó, juntamente com impurezas e tolerações do Kubernetes, para garantir que somente cargas de trabalho tolerantes a falhas sejam programadas para execução em instâncias preemptíveis. Consulte Designando Pods a Nós na documentação do Kubernetes.
- A Oracle recomenda que você não especifique capacidade preemptível como o tipo de capacidade para o pool de nós principal em um cluster. Em vez disso, especifique apenas a capacidade preemptível para pools de nós adicionais que complementam o pool de nós principal do cluster.
- A Oracle recomenda que você evite a situação em que um pool de nós tem uma mistura de tipos de capacidade. Embora haja suporte para uma combinação de tipos de capacidade no mesmo pool de nós, a Oracle recomenda que todos os nós de trabalho no pool de nós tenham o mesmo tipo de capacidade para facilitar o gerenciamento do pool de nós. Por exemplo, a Oracle recomenda:
- evitar a especificação da capacidade sob demanda em um domínio de disponibilidade e da capacidade preemptível em um segundo domínio de disponibilidade
- evitar alterar o tipo de capacidade da capacidade sob demanda para a capacidade preemptível ao expandir um pool de nós para adicionar mais nós
Usando a Console
Criando um Cluster e Especificando a Capacidade Preemptível
- Siga as instruções para criar um cluster usando o workflow 'Criação Personalizada'. Consulte Usando a Console para criar um Cluster com Definições Configuradas Explicitamente no workflow 'Criação Personalizada'.
- Ao especificar a Configuração de Posicionamento para um pool de nós no cluster:
- Especifique o primeiro domínio de disponibilidade e a primeira sub-rede:
- Domínio de Disponibilização: Selecione o domínio da disponibilidade no qual os nós de trabalho serão colocados.
- Domínio de Falha: (Opcional) Um ou mais domínios de falha no domínio de disponibilidade no qual os nós de trabalho serão colocados.
- Sub-rede: Selecione a sub-rede configurada para hospedar nós de trabalho.
-
Selecione Mostrar Opções Avançadas e especifique que você deseja usar instâncias preemptíveis para provisionar nós de trabalho no pool de nós:
- Tipo de Capacidade: Selecione Capacidade Preemptível.
- Quando reivindicado, exclua permanentemente o volume da inicialização anexado: Escolha se deseja excluir permanentemente o volume da inicialização anexado quando a capacidade for reivindicada.
- Opcionalmente, selecione Outra Linha para adicionar domínios de disponibilidade, sub-redes e tipos de capacidade adicionais à configuração de posicionamento. Se você especificar vários domínios de disponibilidade na configuração de posicionamento de um pool de nós, poderá especificar um tipo de capacidade diferente para cada domínio de disponibilidade. No entanto, a Oracle recomenda que todos os nós de trabalho no pool de nós tenham o mesmo tipo de capacidade para facilitar o gerenciamento do pool de nós.
- Especifique o primeiro domínio de disponibilidade e a primeira sub-rede:
Criando um Pool de Nós e Especificando a Capacidade Preemptível
- Abra o menu de navegação e selecione Serviços ao Desenvolvedor. Em Contêineres e Artefatos, selecione Clusters do Kubernetes (OKE).
- Escolha um Compartimento no qual você tem permissão para trabalhar.
- Na página Lista de Clusters, selecione o nome do cluster no qual você deseja criar um novo pool de nós.
- Na página Cluster, exiba a guia Pool de Nós e, em seguida, selecione Adicionar Pool de Nós para criar um novo pool de nó e especificar as propriedades necessárias para seus nós do trabalho.
- Ao especificar a Configuração de Posicionamento para um pool de nós no cluster:
- Especifique o primeiro domínio de disponibilidade e a primeira sub-rede:
- Domínio de Disponibilização: Selecione o domínio da disponibilidade no qual os nós de trabalho serão colocados.
- Domínio de Falha: (Opcional) Um ou mais domínios de falha no domínio de disponibilidade no qual os nós de trabalho serão colocados.
- Sub-rede: Selecione a sub-rede configurada para hospedar nós de trabalho.
-
Selecione Mostrar Opções Avançadas e especifique que você deseja usar instâncias preemptíveis para provisionar nós de trabalho no pool de nós:
- Tipo de Capacidade: Selecione Capacidade Preemptível.
- Quando reivindicado, exclua permanentemente o volume da inicialização anexado: Escolha se deseja excluir permanentemente o volume da inicialização anexado quando a capacidade for reivindicada.
- Opcionalmente, selecione Outra Linha para adicionar domínios de disponibilidade, sub-redes e tipos de capacidade adicionais à configuração de posicionamento. Se você especificar vários domínios de disponibilidade na configuração de posicionamento de um pool de nós, poderá especificar um tipo de capacidade diferente para cada domínio de disponibilidade. No entanto, a Oracle recomenda que todos os nós de trabalho no pool de nós tenham o mesmo tipo de capacidade para facilitar o gerenciamento do pool de nós.
- Especifique o primeiro domínio de disponibilidade e a primeira sub-rede:
Atualizando um Pool de Nós e Especificando a Capacidade Preemptível
- Abra o menu de navegação e selecione Serviços ao Desenvolvedor. Em Contêineres e Artefatos, selecione Clusters do Kubernetes (OKE).
- Escolha um Compartimento no qual você tem permissão para trabalhar.
- Na página Lista de Cluster, selecione o nome do cluster que deseja modificar.
- Selecione Pools de Nós em Recursos e selecione o nome do pool de nós que você deseja modificar.
- Na página Detalhes do Pool de Nós, selecione Editar.
- Ao especificar a Configuração de Posicionamento para um pool de nós no cluster:
- Especifique o primeiro domínio de disponibilidade e a primeira sub-rede:
- Domínio de Disponibilização: Selecione o domínio da disponibilidade no qual os nós de trabalho serão colocados.
- Domínio de Falha: (Opcional) Um ou mais domínios de falha no domínio de disponibilidade no qual os nós de trabalho serão colocados.
- Sub-rede: Selecione a sub-rede configurada para hospedar nós de trabalho.
-
Selecione Mostrar Opções Avançadas e especifique que você deseja usar instâncias preemptíveis para provisionar nós de trabalho no pool de nós:
- Tipo de Capacidade: Selecione Capacidade Preemptível.
- Quando reivindicado, exclua permanentemente o volume da inicialização anexado: Escolha se deseja excluir permanentemente o volume da inicialização anexado quando a capacidade for reivindicada.
- Opcionalmente, selecione Outra Linha para adicionar domínios de disponibilidade, sub-redes e tipos de capacidade adicionais à configuração de posicionamento. Se você especificar vários domínios de disponibilidade na configuração de posicionamento de um pool de nós, poderá especificar um tipo de capacidade diferente para cada domínio de disponibilidade. No entanto, a Oracle recomenda que todos os nós de trabalho no pool de nós tenham o mesmo tipo de capacidade para facilitar o gerenciamento do pool de nós.
- Especifique o primeiro domínio de disponibilidade e a primeira sub-rede:
- Salve as alterações.
Usando a CLI
Para obter informações sobre como usar a CLI, consulte Interface de Linha de Comando (CLI). Para obter uma lista completa de flags e opções disponíveis para comandos da CLI, consulte a Referência da Linha de Comando.
Criando um Pool de Nós e Especificando a Capacidade Preemptível
Para usar a CLI para criar um pool de nós que use capacidade preemptível para provisionar nós de trabalho, inclua o argumento preemptibleNodeConfig
no parâmetro --placement-configs
.
Por exemplo:
oci ce node-pool create \
--cluster-id ocid1.cluster.oc1.iad.aaaaaaaaaf______jrd \
--name test-node \
--node-image-id ocid1.image.oc1.iad.aaaaaaaa6______nha \
--compartment-id oocid1.compartment.oc1..aaaaaaaay______t6q \
--kubernetes-version v1.21.5 \
--node-shape VM.Standard2.1 \
--placement-configs "[{\"availability-domain\":\"IqDk:US-ASHBURN-AD-2\", \"preemptibleNodeConfig\": {\"preemptionAction\":{\"isPreserveBootVolume\":false, \"type\":\"TERMINATE\"}}, \"subnet-id\":\"ocid1.subnet.oc1.iad.aaaaaaaa2xpk______zva\", \"faultDomains\":[\"FAULT-DOMAIN-3\", \"FAULT-DOMAIN-1\"]}, {\"availability-domain\":\"IqDk:US-ASHBURN-AD-1\", \"preemptibleNodeConfig\": {\"preemptionAction\":{\"isPreserveBootVolume\":false, \"type\":\"TERMINATE\"}}, \"subnet-id\":\"ocid1.subnet.oc1.iad.aaaaaaaauhls______bpq\", \"faultDomains\": [\"FAULT-DOMAIN-1\", \"FAULT-DOMAIN-2\"]}]" \
--size 1 \
--region=us-ashburn-1 \
Se você especificar vários domínios de disponibilidade na configuração de posicionamento de um pool de nós, poderá especificar um tipo de capacidade diferente para cada domínio de disponibilidade. No entanto, a Oracle recomenda que todos os nós de trabalho no pool de nós tenham o mesmo tipo de capacidade para facilitar o gerenciamento do pool de nós.
Usando a API
Para obter informações sobre como usar a API e assinar solicitações, consulte a documentação da API REST e Credenciais de Segurança. Para obter informações sobre SDKs, consulte SDKs e a CLI.
Use o atributo placementConfigs
do objeto nodeConfigDetails
para especificar o tipo de capacidade ao criar ou atualizar pools de nós.
Se você especificar vários domínios de disponibilidade na configuração de posicionamento de um pool de nós, poderá especificar um tipo de capacidade diferente para cada domínio de disponibilidade. No entanto, a Oracle recomenda que todos os nós de trabalho no pool de nós tenham o mesmo tipo de capacidade para facilitar o gerenciamento do pool de nós.