Controlador de entradas nativo de OCI

Al activar el complemento de cluster de controlador de entrada nativo de OCI, puede transferir los siguientes pares clave/valor como argumentos.

Argumentos de configuración comunes a todos los complementos del cluster
Clave (API y CLI) Nombre mostrado de clave (consola) Descripción Necesario/Opcional Valor por defecto Valor de ejemplo
affinity afinidad

Grupo de reglas de programación de afinidad.

Formato JSON en texto sin formato o codificado con Base64.

No utilizado por:
  • Operador de GPU de Nvidia
Posibles equivalentes:
  • Detección de funciones de nodo, utilice master.affinity
  • Operador de red NVIDIA, utilice operator.affinity
  • SMB de controlador CSI, utilice contoller.affinity
Opcional nulo nulo
nodeSelectors selectores de nodos

Puede utilizar selectores de nodos y etiquetas de nodos para controlar los nodos de trabajador en los que se ejecutan los pods de complementos.

Para que un pod se ejecute en un nodo, el selector de nodos del pod debe tener la misma clave/valor que la etiqueta del nodo.

Defina nodeSelectors en un par clave/valor que coincida con el selector de nodos del pod y la etiqueta del nodo de trabajador.

Formato JSON en texto sin formato o codificado con Base64.

No utilizado por:
  • Operador de GPU de NVIDIA
  • SMB de controlador CSI
Posibles equivalentes:
  • Detección de funciones de nodo, utilice worker.nodeSelector
  • Operador de red NVIDIA, utilice operator.nodeSelectors
Opcional nulo {"foo":"bar", "foo2": "bar2"}

El pod solo se ejecutará en nodos que tengan la etiqueta foo=bar o foo2=bar2.

numOfReplicas numOfReplicas Número de réplicas del despliegue del complemento.
No utilizado por:
  • Plugin de GPU de AMD
  • Operador de GPU de NVIDIA
  • Operador de red NVIDIA
  • SMB de controlador CSI
Posibles equivalentes:
  • CoreDNS, utilice nodesPerReplica
  • Detección de funciones de nodo, utilice master.replicaCount
Obligatorio 1

Crea una réplica del despliegue del complemento por cluster.

2

Crea dos réplicas del despliegue del complemento por cluster.

rollingUpdate rollingUpdate

Controla el comportamiento deseado de la actualización sucesiva mediante maxSurge y maxUnavailable.

Formato JSON en texto sin formato o codificado con Base64.

No utilizado por:
  • Detección de funciones de nodo
  • Operador de red NVIDIA
  • SMB de controlador CSI
Posibles equivalentes:
  • Operador de GPU de NVIDIA, utilice daemonsets.rollingUpdate.maxUnavailable
Opcional nulo nulo
tolerations tolerancias

Puede utilizar contaminantes y tolerancias para controlar los nodos de trabajador en los que se ejecutan los pods de complementos.

Para que un pod se ejecute en un nodo que tenga un tinte, el pod debe tener una tolerancia correspondiente.

Defina tolerations en un par clave/valor que coincida con la tolerancia del pod y el mantenimiento del nodo de trabajador.

Formato JSON en texto sin formato o codificado con Base64.

Posibles equivalentes:
  • Detección de funciones de nodo, utilice master.tolerations y/o worker.tolerations
  • Operador de GPU de NVIDIA, utilice daemonsets.tolerations
  • Operador de red NVIDIA, utilice operator.tolerations
  • SMB de controlador CSI, utilice controller.tolerations
Opcional nulo [{"key":"tolerationKeyFoo", "value":"tolerationValBar", "effect":"noSchedule", "operator":"exists"}]

Solo los pods que tienen esta tolerancia se pueden ejecutar en nodos de trabajador que tengan el mantenimiento tolerationKeyFoo=tolerationValBar:noSchedule.

topologySpreadConstraints topologySpreadConstraints

Cómo difundir vainas coincidentes entre la topología dada.

Formato JSON en texto sin formato o codificado con Base64.

No utilizado por:
  • Detección de funciones de nodo
  • Operador de GPU de NVIDIA
  • Operador de red NVIDIA
  • SMB de controlador CSI
Opcional nulo nulo
Argumentos de configuración específicos de este complemento de cluster
Clave (API y CLI) Nombre mostrado de clave (consola) Descripción Necesario/Opcional Valor por defecto Valor de ejemplo
authSecretName authSecretName Nombre del secreto de Kubernetes que se va a utilizar para la autenticación de usuario cuando authType se define en user. Opcional "" oci-config
authType authType Tipo de autenticación que utiliza el controlador de entrada nativo de OCI al realizar solicitudes, como una de las siguientes:
  • instance especifica el principal de instancia (solo nodos gestionados)
  • user especifica el principal de usuario (nodos gestionados y virtuales)
  • workloadIdentity especifica la identidad de la carga de trabajo (nodos gestionados y virtuales)
Opcional instance workloadIdentity
certDeletionGracePeriodInDays certDeletionGracePeriodInDays

Número de días que espera el controlador de entrada nativo de OCI antes de suprimir los recursos de servicio de certificados de OCI no utilizados. Se aplica cuando el controlador de entrada nativo de OCI obtiene un certificado del servicio Certificates mediante un secreto de Kubernetes.

Debe ser un valor entero. Si el valor es menor o igual que cero, el controlador de entrada nativo de OCI no suprime los recursos de servicio OCI Certificates no utilizados.

Opcional 0 1
compartmentId compartmentId OCID del compartimento en el que el controlador de entrada nativo de OCI va a crear el equilibrador de carga de OCI (y el certificado, si el argumento del complemento useLbCompartmentForCertificates está definido en false). Obligatorio "" ocid1.compartment.oc1..aaaaaaaa______ddq
controllerClass controllerClass El nombre del controlador especificado en su ingressClass que debe gestionar el controlador de entrada nativo de OCI. Opcional oci.oraclecloud.com/native-ingress-controller oci.oraclecloud.com/native-ingress-controller
emitEvents emitEvents

Si se emiten eventos de Kubernetes para errores de entrada y IngressClass observados durante la conciliación.

Si se define en true, los eventos se emiten.

Opcional false false
leaseLockName leaseLockName Indica el nombre del arrendamiento que se usará para la elección de líder. Opcional oci-native-ingress-controller oci-native-ingress-controller
leaseLockNamespace leaseLockNamespace Espacio de nombres del permiso. Opcional native-ingress-controller-system native-ingress-controller-system
loadBalancerSubnetId loadBalancerSubnetId OCID de la subred del equilibrador de carga. Obligatorio "" ocid1.subnet.oc1.iad.aaaaaaaa______dba
logVerbosity logVerbosity El número para el nivel de detalle del registro. Opcional 4 2
metricsBackend metricsBackend Nombre del backend de métricas. Opcional prometheus prometheus
metricsPort metricsPort Puerto de métricas. Opcional 2223 2223
oci-native-ingress-controller.ContainerResources recursos de contenedor native-ingress-controller

Puede especificar las cantidades de recursos que solicitan los contenedores complementarios y establecer límites de uso de recursos que los contenedores complementarios no pueden superar.

Formato JSON en texto sin formato o codificado con Base64.

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

Cree contenedores complementarios que soliciten 100 millicores de CPU y 100 mebibytes de memoria. Limite los contenedores complementarios a 500 millicores de CPU y 200 mebibytes de memoria.

useLbCompartmentForCertificates useLbCompartmentForCertificates

Si utilizar el compartimento especificado para el equilibrador de carga de OCI (en el recurso IngressClassParameters relacionado) para gestionar los recursos del servicio OCI Certificates al utilizar un secreto de Kubernetes para obtener un certificado y un grupo de autoridades de certificación. Consulte Opción 1: OCI Native Ingress Controller obtiene el certificado del servicio Certificates mediante un secreto de Kubernetes.

Si se define en false, se utiliza el compartimento especificado por el argumento de complemento compartmentId.

Opcional false false
Consideraciones de cluster grande

En la siguiente tabla, se describen las consideraciones para configurar este complemento de cluster en clusters de gran tamaño.

Nombre del Argumento Número de nodos ordenado de roles Descripción A medida que aumenta el tamaño del cluster Riesgos Recomendación
affinity N

Controla la ubicación de los pods del controlador de entrada nativo según las reglas de afinidad de pod y antiafinidad de pod.

No aplicable No aplicable No aplicable
nodeSelectors N

Controla la ubicación de los pods del controlador de entrada nativo según las etiquetas de nodo.

No aplicable No aplicable No aplicable
numOfReplicas N

Controla el número de réplicas en el despliegue del controlador de entrada nativo.

No aplicable No aplicable No aplicable
rollingUpdate N

Controla la estrategia de actualización del despliegue, incluida la configuración como maxSurge y maxUnavailable .

No aplicable No aplicable No aplicable
tolerations N

Controla si los pods del controlador de entrada nativo se pueden ejecutar en nodos contaminados.

No aplicable No aplicable No aplicable
topologySpreadConstraints N

Controla cómo los pods del controlador de entrada nativo coincidentes se distribuyen en la topología del cluster mediante valores como maxSkew y minDomains .

No aplicable No aplicable No aplicable
oci-native-ingress-controller.ContainerResources Y

Define las solicitudes de CPU y memoria y los límites para el pod del controlador de entrada nativo.

El controlador examina los nodos para identificar los backends del equilibrador de carga disponibles. Por lo tanto, el uso de CPU y memoria aumenta a medida que aumenta el número de nodos.

Cuando externalTrafficPolicy se define en Cluster , la caché de informador de nodo puede contener información de backend para cada nodo. En un cluster con aproximadamente 20 000 nodos, el procesamiento de la información de backend durante cada ciclo de sincronización puede convertirse en un cuello de botella de recursos.

Cuando externalTrafficPolicy se define en Local , el volumen de sincronización de backend es sustancialmente menor porque solo se incluyen los nodos con backends locales.

  • La conciliación de backend puede causar una presión significativa de CPU y memoria.
  • Los ciclos de sincronización pueden llegar a ser lentos cuando el controlador procesa información de backend en miles de nodos.
  • Si una solicitud de backend supera el límite de 512 backends del equilibrador de carga, el plano de control del equilibrador de carga rechaza la actualización.
  • Las actualizaciones rechazadas repetidamente pueden dejar backends obsoletos configurados en el equilibrador de carga.

Se espera una CPU alta y un límite con externalTrafficPolicy definido en Cluster. Se necesita moderar si externalTrafficPolicy está definido en Local. Con las comprobaciones de estado de la política de tráfico externa Local se restringen a nodos o pods con backends locales, hasta el límite de backend del equilibrador de carga.

routingStrategies.hostBasedRouting N

Enruta las solicitudes a un servicio según el nombre de dominio de la solicitud.

No aplicable No aplicable No aplicable
routingStrategies.pathBasedRouting N

Enruta las solicitudes a un servicio según la ruta de acceso de solicitud o el punto final de API.

No aplicable No aplicable No aplicable
routingStrategies.defaultRouting N

Enruta las solicitudes que no coinciden con otra regla al servicio de backend por defecto.

No aplicable No aplicable No aplicable
NIC annotations Y

Configure el comportamiento del equilibrador de carga y el controlador de entrada nativo, incluidos los valores de comprobación del sistema del backend.

El rendimiento del enrutamiento del equilibrador de carga sigue limitado por el máximo de 512 backends en lugar del número total de nodos de cluster.

Sin embargo, la política de tráfico externo seleccionada afecta al uso de recursos del controlador:

  • Con externalTrafficPolicy: Cluster , las comprobaciones de estado se pueden extender por todos los nodos del cluster, lo que crea una sobrecarga significativa en un cluster con aproximadamente 20 000 nodos.
  • Con externalTrafficPolicy: Local , las comprobaciones del sistema se limitan a nodos o pods con backends locales, hasta el límite de backend del equilibrador de carga.
  • La expulsión de la comprobación del sistema de todo el cluster puede aumentar sustancialmente el uso de CPU y memoria.
  • La actualización de la configuración de comprobación del sistema puede hacer que el controlador vuelva a evaluar los pods de backend en el cluster.
  • La contención de CPU y memoria se puede producir incluso cuando externalTrafficPolicy está definido en Local .

Consulte las mejores prácticas en el equilibrador de carga y la comprobación del sistema del backend.