Controlador Nativo de Entrada do OCI

Ao ativar o complemento de cluster do controlador de entrada nativo do OCI, você pode especificar os pares de chave/valor a seguir como argumentos.

Argumentos de Configuração Comuns à maioria dos Complementos de Cluster
Chave (API e CLI) Nome para Exibição da Chave (Console) Descrição Obrigatório/Opcional Valor Padrão Valor de Exemplo
affinity afinidade

Um grupo de regras de programação de afinidade.

Formato JSON em texto simples ou codificado em Base64.

Não utilizado por:
  • Operador de GPU Nvidia
Possíveis equivalentes:
  • Descoberta de Recursos do Nó, use master.affinity
  • Operador de Rede NVIDIA, use operator.affinity
  • Driver SMB CSI, use contoller.affinity
  • Operador de GPU AMD, use controllerManager.affinity
Opcional nulo nulo
nodeSelectors seletores de nó

Você pode usar seletores de nó e labels de nó para controlar os nós de trabalho nos quais os pods complementares são executados.

Para que um pod seja executado em um nó, o seletor de nós do pod deve ter a mesma chave/valor do label do nó.

Defina nodeSelectors como um par de chave/valor que corresponda ao seletor de nós do pod e ao label do nó de trabalho.

Formato JSON em texto simples ou codificado em Base64.

Não utilizado por:
  • Operador de GPU NVIDIA
  • SMB do Driver CSI
Possíveis equivalentes:
  • Descoberta de Recursos do Nó, use worker.nodeSelector
  • Operador de Rede NVIDIA, use operator.nodeSelectors
  • Operador de GPU AMD, use selector ou controllerManager.nodeSelector
Opcional nulo {"foo":"bar", "foo2": "bar2"}

O pod só será executado em nós que tenham o label foo=bar ou foo2=bar2.

numOfReplicas numOfReplicas O número de réplicas da implantação do complemento.
Não utilizado por:
  • Plug-in de GPU AMD
  • Operador de GPU NVIDIA
  • Operador de Rede NVIDIA
  • SMB do Driver CSI
Possíveis equivalentes:
  • CoreDNS, use nodesPerReplica
  • Descoberta de Recursos do Nó, use master.replicaCount
  • Operador de GPU AMD, use controllerManager.replicas
Obrigatório 1

Cria uma réplica da implantação do complemento por cluster.

2

Cria duas réplicas da implantação do complemento por cluster.

rollingUpdate rollingUpdate

Controla o comportamento desejado de atualização incremental por maxSurge e maxUnavailable.

Formato JSON em texto simples ou codificado em Base64.

Não utilizado por:
  • Descoberta de Recurso do Nó
  • Operador de Rede NVIDIA
  • SMB do Driver CSI
Possíveis equivalentes:
  • Operador de GPU NVIDIA, use daemonsets.rollingUpdate.maxUnavailable
  • Operador de GPU AMD, use upgradePolicy em devicePlugin, metricsExporter, testRunner, configManager ou draDriver
Opcional nulo nulo
tolerations tolerâncias

Você pode usar taints e tolerations para controlar os nós de trabalho nos quais os pods complementares são executados.

Para que um pod seja executado em um nó que tenha uma taint, o pod deve ter uma tolerância correspondente.

Defina tolerations como um par de chave/valor que corresponda à tolerância do pod e à mancha do nó de trabalho.

Formato JSON em texto simples ou codificado em Base64.

Possíveis equivalentes:
  • Descoberta de Recursos do Nó, use master.tolerations e/ou worker.tolerations
  • Operador de GPU NVIDIA, use daemonsets.tolerations
  • Operador de Rede NVIDIA, use operator.tolerations
  • Driver SMB CSI, use controller.tolerations
  • Operador de GPU AMD, usar tolerações em devicePlugin, metricsExporter, testRunner, configManager, draDriver ou controllerManager
Opcional nulo [{"key":"tolerationKeyFoo", "value":"tolerationValBar", "effect":"noSchedule", "operator":"exists"}]

Somente pods que têm essa tolerância podem ser executados em nós de trabalho que têm a mancha tolerationKeyFoo=tolerationValBar:noSchedule.

topologySpreadConstraints topologySpreadConstraints

Como distribuir pods correspondentes entre a topologia fornecida.

Formato JSON em texto simples ou codificado em Base64.

Não utilizado por:
  • Descoberta de Recurso do Nó
  • Operador de GPU NVIDIA
  • Operador de Rede NVIDIA
  • SMB do Driver CSI
  • AMD GPU Operator
Opcional nulo nulo
Argumentos de Configuração Específicos para esta Extensão de Cluster
Chave (API e CLI) Nome para Exibição da Chave (Console) Descrição Obrigatório/Opcional Valor Padrão Valor de Exemplo
authSecretName authSecretName O nome do segredo do Kubernetes a ser usado para autenticação do usuário quando authType for definido como user. Opcional "" oci-config
authType authType O tipo de autenticação que o controlador de entrada nativo do OCI usa ao fazer solicitações, como um dos seguintes:
  • instance especifica o controlador de instâncias (somente nós gerenciados)
  • user especifica o principal do usuário (nós gerenciados e virtuais)
  • workloadIdentity especifica a identidade da carga de trabalho (nós gerenciados e virtuais)
Opcional instance workloadIdentity
certDeletionGracePeriodInDays certDeletionGracePeriodInDays

O número de dias que o controlador de entrada nativo do OCI aguarda antes de excluir recursos do serviço OCI Certificates não utilizados. Aplica-se quando o OCI Native Ingress Controller obtém um certificado do serviço Certificates usando um segredo do Kubernetes.

Deve ser um valor inteiro. Se o valor for menor ou igual a zero, o controlador de entrada nativo do OCI não excluirá recursos de serviço não utilizados do OCI Certificates.

Opcional 0 1
compartmentId compartmentId O OCID do compartimento no qual o controlador de entrada nativo do OCI deve criar o balanceador de carga do OCI (e o certificado, se o argumento add-on useLbCompartmentForCertificates estiver definido como false). Obrigatório "" ocid1.compartment.oc1..aaaaaaaa______ddq
controllerClass controllerClass O nome do controlador especificado no seu ingressClass que deve ser gerenciado pelo oci-native-ingress-controller. Opcional oci.oraclecloud.com/native-ingress-controller oci.oraclecloud.com/native-ingress-controller
emitEvents emitEvents

Se serão emitidos eventos do Kubernetes para erros de Entrada e IngressClass observados durante a reconciliação.

Se definido como true, os eventos serão emitidos.

Opcional false false
leaseLockName leaseLockName O nome do contrato de arrendamento a ser usado para a eleição do líder. Opcional oci-native-ingress-controller oci-native-ingress-controller
leaseLockNamespace leaseLockNamespace O namespace do leasing. Opcional native-ingress-controller-system native-ingress-controller-system
loadBalancerSubnetId loadBalancerSubnetId O OCID da sub-rede do balanceador de carga. Obrigatório "" ocid1.subnet.oc1.iad.aaaaaaaa______dba
logVerbosity logVerbosity O número do nível de detalhamento do log. Opcional 4 2
metricsBackend metricsBackend O nome do backend de métricas. Opcional prometheus prometheus
metricsPort metricsPort A porta de métricas. Opcional 2223 2223
oci-native-ingress-controller.ContainerResources recursos de contêiner native-ingress-controller

Você pode especificar as quantidades de recursos solicitadas pelos contêineres de complementos e definir limites de uso de recursos que os contêineres de complementos não podem exceder.

Formato JSON em texto simples ou codificado em Base64.

Opcional nulo {"limits": {"cpu": "500m", "memory": "200Mi" }, "requests": {"cpu": "100m", "memory": "100Mi"}}

Crie contêineres complementares que solicitem 100 mililitros de CPU e 100 mebibytes de memória. Limite os contêineres complementares a 500 milicores de CPU e 200 mebibytes de memória.

useLbCompartmentForCertificates useLbCompartmentForCertificates

Se o compartimento especificado para o balanceador de carga do OCI (no recurso IngressClassParameters relacionado) deve ser usado para gerenciar recursos do serviço OCI Certificates ao usar um segredo do Kubernetes para obter um certificado e um pacote de CAs. Consulte Opção 1: O OCI Native Ingress Controller obtém o certificado do serviço Certificates usando um segredo do Kubernetes.

Se definido como false, o compartimento especificado pelo argumento de complemento compartmentId será usado.

Opcional false false
Considerações sobre Clusters Grandes

A tabela a seguir descreve considerações para configurar este complemento de cluster em clusters grandes.

Nome do Argumento Número wrt de Atribuições dos Nós Descrição À medida que o tamanho do cluster aumenta Riscos Recomendação
affinity N

Controla o posicionamento de pods do Native Ingress Controller com base nas regras de afinidade e antiafinidade de pod.

Não aplicável Não aplicável Não aplicável
nodeSelectors N

Controla o posicionamento dos pods do Controlador de Entrada Nativo com base nos labels dos nós.

Não aplicável Não aplicável Não aplicável
numOfReplicas N

Controla o número de réplicas na implantação do Controlador de Entrada Nativo.

Não aplicável Não aplicável Não aplicável
rollingUpdate N

Controla a estratégia de atualização de implantação, incluindo definições como maxSurge e maxUnavailable .

Não aplicável Não aplicável Não aplicável
tolerations N

Controla se os pods do Controlador de Entrada Nativo podem ser executados em nós contaminados.

Não aplicável Não aplicável Não aplicável
topologySpreadConstraints N

Controla como os pods correspondentes do Native Ingress Controller são distribuídos pela topologia do cluster usando definições como maxSkew e minDomains .

Não aplicável Não aplicável Não aplicável
oci-native-ingress-controller.ContainerResources S

Define solicitações e limites de CPU e memória para o pod do Native Ingress Controller.

A controladora examina os nós para identificar os backends do balanceador de carga disponíveis. Portanto, o uso de CPU e memória aumenta à medida que o número de nós aumenta.

Quando externalTrafficPolicy é definido como Cluster , o cache do informador do nó pode conter informações de backend para cada nó. Em um cluster com aproximadamente 20.000 nós, o processamento de informações de back-end durante cada ciclo de sincronização pode se tornar um gargalo de recursos.

Quando externalTrafficPolicy é definido como Local , o volume de sincronização de backend é substancialmente menor porque somente os nós com backends locais são incluídos.

  • A reconciliação de back-end pode causar uma pressão significativa de CPU e memória.
  • Os ciclos de sincronização podem ficar lentos quando a controladora processa informações de back-end em milhares de nós.
  • Se uma solicitação de backend exceder o limite de 512 backends do balanceador de carga, o plano de controle do balanceador de carga rejeitará a atualização.
  • As atualizações rejeitadas repetidamente podem deixar backends desatualizados configurados no balanceador de carga.

A cpu e o limite altos são esperados com externalTrafficPolicy definido como Cluster. Moderado obrigatório se externalTrafficPolicy estiver definido como Local. Com o Local, as verificações de integridade da política de tráfego externo são restritas a nós ou pods com backends locais, até o limite de backend do balanceador de carga.

routingStrategies.hostBasedRouting N

Encaminha solicitações para um serviço com base no nome do domínio na solicitação.

Não aplicável Não aplicável Não aplicável
routingStrategies.pathBasedRouting N

Roteia solicitações para um serviço com base no caminho da solicitação ou no ponto final da API.

Não aplicável Não aplicável Não aplicável
routingStrategies.defaultRouting N

Roteia solicitações que não correspondem a outra regra para o serviço de backend padrão.

Não aplicável Não aplicável Não aplicável
NIC annotations S

Configure o comportamento do Controlador de Entrada Nativo e do balanceador de carga, incluindo definições de verificação de integridade do backend.

O desempenho do roteamento do balanceador de carga permanece restrito pelo máximo de 512 backends, em vez do número total de nós do cluster.

No entanto, a política de tráfego externo selecionada afeta o uso de recursos do controlador:

  • Com o externalTrafficPolicy: Cluster , as verificações de integridade podem ocorrer em todos os nós do cluster, criando uma sobrecarga significativa em um cluster com aproximadamente 20.000 nós.
  • Com o externalTrafficPolicy: Local , as verificações de integridade são restritas a nós ou pods com backends locais, até o limite de backend do balanceador de carga.
  • O fan-out de verificação de integridade em todo o cluster pode aumentar substancialmente o uso de CPU e memória.
  • A atualização da configuração de verificação de integridade pode fazer com que a controladora reavalie os pods de backend no cluster.
  • A contenção de CPU e memória pode ocorrer mesmo quando externalTrafficPolicy está definido como Local .

Consulte as melhores práticas na verificação de integridade do balanceador de carga e do backend.