Comparando Nós Virtuais com Nós Gerenciados
Descubra as diferenças entre os nós virtuais e os nós gerenciados que você pode criar usando o Kubernetes Engine (OKE).
Ao criar um pool de nós com o Kubernetes Engine, você especifica o tipo de nós de trabalho a serem criados no pool de nós como um ou outro dos seguintes:
- Nós virtuais: Os nós virtuais são totalmente gerenciados pela Oracle. Consulte Nós Virtuais e Grupos de Nós Virtuais.
- Nós gerenciados: Nós gerenciados são executados em instâncias de computação (bare metal ou máquina virtual) em sua tenancy e são pelo menos parcialmente gerenciados por você. Consulte Nós Gerenciados e Pools de Nós Gerenciados.
Só é possível criar nós virtuais em clusters aprimorados. É possível criar nós gerenciados tanto em clusters básicos como nos avançados.
Todas as referências a 'nós' e 'nós do colaborador' na documentação do Kubernetes Engine se referem a nós virtuais e nós gerenciados, a menos que seja declarado explicitamente em contrário.
Nós virtuais e grupos de nós virtuais
Nós virtuais são executados na tenancy do Kubernetes Engine. Você cria nós virtuais criando um pool de nós virtuais. Os nós virtuais e os pools de nós virtuais são totalmente gerenciados pela Oracle.
Os nós virtuais fornecem uma experiência de Kubernetes "sem servidor", permitindo que você execute aplicativos em contêineres em escala sem a sobrecarga operacional de fazer upgrade da infraestrutura do plano de dados e gerenciar a capacidade dos clusters.
Só é possível criar nós virtuais e pools de nós em clusters aprimorados.
Recursos notáveis suportados de forma diferente por nós virtuais
Alguns recursos são suportados de forma diferente ao usar nós virtuais em vez de nós gerenciados:
-
Alocação de Recursos: A alocação de recursos está no nível do pod, e não no nível do nó de trabalho. Consequentemente, você especifica requisitos de recursos de CPU e memória (como solicitações e limites) na especificação do pod, em vez dos nós de trabalho em um pool de nós. Consulte Recursos Alocados a Pods Provisionados por Nós Virtuais.
- Balanceamento de Carga: O balanceamento de carga ocorre entre pods, em vez de entre nós de trabalho (como é o caso dos nós gerenciados). Em clusters com nós virtuais, o gerenciamento da lista de segurança do balanceador de carga nunca é ativado e você sempre precisa configurar manualmente as regras de segurança. Os balanceadores de carga distribuem o tráfego entre os endereços IP e uma porta de nó designada. Ao estabelecer conexão com pods em execução em nós virtuais, use a sintaxe
<pod-ip>:<nodeport>
, em vez de<node-ip>:<nodeport>
. Se você usar diferentes sub-redes para pods e nós, configure a entrada da porta do nó na sub-rede do pod. - Rede de Pod: Somente a Rede de Pods Nativa da VCN é suportada (o plug-in de flannel CNI não é suportado). Além disso, o suporte é um pouco diferente ao usar nós virtuais:
- Somente uma VNIC é anexada a cada nó virtual.
- Os endereços IP não são pré-alocados antes da criação dos pods.
- O plug-in VCN-Native Pod Networking CNI não é mostrado como executado no namespace kube-system.
- Como apenas a Rede de Pod Nativa da VCN é suportada, a tabela de roteamento da sub-rede do pod deve ter regras de roteamento definidas para um gateway NAT (não um gateway de internet) e um gateway de serviço.
- Dimensionamento Automático: Os nós virtuais são dimensionados automaticamente para suportar 500 pods. Como a Oracle gerencia os recursos subjacentes para nós virtuais, é mais fácil trabalhar com o Kubernetes Horizontal Pod Autoscaler. Não é necessário usar o Kubernetes Cluster Autoscaler (que ainda não é suportado com nós virtuais em nenhum caso). O Kubernetes Vertical Pod Autoscaler não é suportado com nós virtuais.
Recursos e recursos notáveis do Kubernetes não suportados ao usar nós virtuais
Alguns recursos e funcionalidades do Kubernetes não são suportados ou ainda não estão disponíveis ao usar nós virtuais em vez de nós gerenciados.
Recursos do Kubernetes não suportados | Informações adicionais |
---|---|
Flannel e outros plug-ins CNI de terceiros não são suportados. | Os nós virtuais só suportam o plug-in da CNI de Rede do Pod Nativo da VCN do OCI. |
Os daemonsets do Kubernetes não são suportados. |
Por exemplo, o seguinte não é suportado:
|
Não há suporte para reivindicações de volume persistentes (PVCs). | Nenhuma informação adicional. |
Os provedores de rede que suportam recursos NetworkPolicy juntamente com o plug-in CNI usado no cluster (como Calico e Cilium) não são suportados. | Nenhuma informação adicional. |
As políticas de rede (o recurso NetworkPolicy do Kubernetes) não são suportadas. | Nenhuma informação adicional. |
Os produtos de malha de serviço não são suportados. | Produtos como Oracle Cloud Infrastructure Service Mesh e Istio Service Mesh não são suportados. |
As investigações de disponibilidade e disponibilidade do tipo HTTP são suportadas. As investigações HTTPS e exec são suportadas. Sondagens de inicialização são suportadas. As investigações gRPC não são suportadas. probe.terminationGracePeriodSeconds não é suportado. |
Por exemplo, estes itens são suportados:
No entanto, o seguinte não é suportado:
|
O comando O comando O comando |
Por exemplo, estes itens são suportados:
No entanto, o seguinte não é suportado:
|
Contêineres efêmeros não são suportados. | Nenhuma informação adicional. |
Os recipientes de inicialização não são suportados. | Nenhuma informação adicional. |
Os seguintes Tipos de Volume são suportados:
Os seguintes Tipos de Volume não são suportados:
|
Por exemplo, o seguinte não é suportado:
|
No momento, é possível definir no máximo 1 volume do tipo emptyDir na especificação do pod. | Nenhuma informação adicional. |
Os seguintes campos de Pod não são suportados:
|
Por exemplo, o seguinte não é suportado:
|
Os seguintes contextos de segurança de Pod são suportados:
Os seguintes contextos de segurança do Pod não são suportados:
|
Por exemplo, o seguinte não é suportado:
|
Os seguintes contextos de segurança do Contêiner são suportados:
Os seguintes contextos de segurança do Contêiner não são suportados:
|
Por exemplo, o seguinte é suportado: No entanto, o seguinte não é suportado:
|
Container.Port
|
Por exemplo, o seguinte não é suportado:
|
Contêiner
|
Observe que o Kubernetes adiciona TerminationMessagePolicy e TerminationMessagePath por padrão. |
O intervalo de portas do contêiner (1, 65535) não pode entrar em conflito com o intervalo NodePort (30000-32767). | Por exemplo, o seguinte não é suportado:
|
Pod.Volumes.EmptyDirVolumeSource:Limite de Tamanho | Por exemplo, o seguinte não é suportado:
|
Pod.Volumes.EmptyDirVolumeSource:Médio - só pode ser "" ou "Memória" | Por exemplo, o seguinte não é suportado:
|
Pod:Volumes - O modo deve ser especificado como 0644 para o seguinte:
|
Por exemplo, o seguinte não é suportado:
|
Pod:Volumes - se DefaultMode for especificado para o seguinte, DefaultMode deverá ser 0644:
|
Por exemplo, o seguinte não é suportado:
|
Resources.Requests não pode ser diferente de Resources.Limits | Por exemplo, o seguinte não é suportado:
|
Volumes:DownwardAPI:ResourceFieldRef | Por exemplo, o seguinte não é suportado:
|
TerminationGracePeriodSeconds | Por exemplo, o seguinte não é suportado:
|
DeletionGracePeriodSeconds | Por exemplo, o seguinte não é suportado:
|
Executar Contêiner | Por exemplo, o seguinte não é suportado:
|
Comando port-forward Kubectl | Em vez disso, use kubectl proxy (consulte Diagnosticando e Solucionando Problemas de Pod e Serviço em Nós Virtuais Usando proxy kubectl em Vez de encaminhar porta kubectl). |
Solicitações UpdatePod com mutações para pod.spec.containers[].image | Nenhuma informação adicional. |
Propagação para pods de atualizações para mapas de configuração e segredos montados | Nenhuma informação adicional. |
As seguintes métricas no nível do contêiner no ponto final de métricas do kubelet virtual são suportadas:
|
Nenhuma informação adicional. |
Contêiner:Subnúcleo de Necessidades de Recurso | Nenhuma informação adicional. |
Contêiner stdin/stdinOnce, tty | Nenhuma informação adicional. |
Preservar endereços IP do cliente quando externalTrafficPolicy: Local | Nenhuma informação adicional. |
Tipos ImagePullSecret diferentes de config e configJson | Nenhuma informação adicional. |
ProjectedVolumeSource:ServiceAccountTokenProjection:Segundos de Expiração | Nenhuma informação adicional. |
O comando kubectl attach para interagir com um processo que já está em execução dentro de um contêiner existente. |
Nenhuma informação adicional. |
Recursos e recursos notáveis do Kubernetes Engine (OKE) não suportados ao usar nós virtuais
Alguns recursos e funcionalidades do Kubernetes Engine não estão disponíveis, ou ainda não estão disponíveis, ao usar nós virtuais em vez de nós gerenciados.
Recursos do Kubernetes Engine não suportados | Informações adicionais |
---|---|
Conexões SSH com nós de trabalho (incluindo por meio de um bastion) | Não disponível. |
Uso de scripts cloud-init personalizados | Não disponível. |
Script do Node Doctor | Não disponível. |
Suporte para versões do Kubernetes anteriores à versão 1.25 | Os nós virtuais exigem que o cluster esteja executando pelo menos o Kubernetes versão 1.25. |
Clusters mistos, contendo nós virtuais e nós gerenciados. | Ainda não está disponível |
Dimensionamento automático do número de nós virtuais. | Ainda não está disponível |
Reservas de capacidade para provisionar nós virtuais. | Ainda não está disponível |
Pods com formas Intel e GPU. | Ainda não está disponível |
Rotação de credenciais, conforme descrito em Rotacionando Credenciais do Cluster | Ainda não está disponível |
Implantações comuns não suportadas e suportadas de forma diferente ao usar nós virtuais
As seguintes implantações comuns não são suportadas ao usar nós virtuais em vez de nós gerenciados ou são suportadas de maneira diferente:
Implantação | Observações |
---|---|
kube-proxy no namespace kube-system e no add-on de cluster kube-proxy | O kube-proxy é executado em pods programados em nós virtuais, mas não é implantado no namespace kube-system. |
Painel do Kubernetes | Não suportado ao usar nós virtuais. |
Controlador de entrada do Nginx | Implante de forma diferente ao usar nós virtuais (consulte Configurando o Exemplo de Controlador de Entrada). |
do Kubernetes Cluster | Não suportado ao usar nós virtuais. |
Escalador de Pod Vertical | Não suportado ao usar nós virtuais. |
Kubernetes Metrics Server | Implante de maneira diferente ao usar nós virtuais (consulte Implantando o Servidor de Métricas do Kubernetes em um Cluster). |
Nós Gerenciados e Pools de Nós Gerenciados
Nós gerenciados são executados em instâncias de computação (bare metal ou máquina virtual) em sua tenancy. Você cria nós gerenciados criando um pool de nós gerenciados. Nós gerenciados e pools de nós gerenciados são gerenciados por você.
Como você é responsável pelo gerenciamento de nós gerenciados, tem a flexibilidade de configurá-los para atender aos seus requisitos específicos. Você é responsável pelo upgrade do Kubernetes em nós gerenciados e pelo gerenciamento da capacidade do cluster.
Ao usar nós gerenciados, você paga pelas instâncias de computação que executam aplicativos.
É possível criar nós gerenciados e pools de nós tanto em clusters básicos como nos avançados.
Para obter mais informações, consulte Comparando Nós Gerenciados com Nós Virtuais