Contrôleur d'entrée natif OCI

Lorsque vous activez l'extension de cluster de contrôleurs entrants natifs OCI, vous pouvez transmettre les paires clé/valeur suivantes en tant qu'arguments.

Arguments de configuration communs à la plupart des modules complémentaires de cluster
Clé (API et CLI) Nom d'affichage de la clé (console) Description Obligatoire/Facultatif Valeur par défaut Exemple de valeur
affinity affinité

Groupe de règles de programmation d'affinité.

Format JSON en texte brut ou encodé Base64.

Non utilisé par:
  • Opérateur GPU Nvidia
Equivalents possibles :
  • Repérage des fonctionnalités de noeud, utilisez master.affinity
  • Opérateur réseau NVIDIA, utilisez operator.affinity
  • Pilote CSI SMB, utilisez contoller.affinity
  • Opérateur de GPU AMD, utilisez controllerManager.affinity
Facultatif NULL NULL
nodeSelectors Sélecteurs de noeud

Vous pouvez utiliser des sélecteurs de noeud et des libellés de noeud pour contrôler les noeuds de processus actif sur lesquels les pods d'extension sont exécutés.

Pour qu'un pod s'exécute sur un noeud, le sélecteur de noeud du pod doit avoir la même clé/valeur que l'étiquette du noeud.

Définissez nodeSelectors sur une paire clé/valeur correspondant à la fois au sélecteur de noeud du pod et au libellé du noeud de processus actif.

Format JSON en texte brut ou encodé Base64.

Non utilisé par:
  • Opérateur GPU NVIDIA
  • Pilote CSI SMB
Equivalents possibles :
  • Repérage des fonctionnalités de noeud, utilisez worker.nodeSelector
  • Opérateur réseau NVIDIA, utilisez operator.nodeSelectors
  • Opérateur de GPU AMD, utilisez selector ou controllerManager.nodeSelector
Facultatif NULL {"foo":"bar", "foo2": "bar2"}

Le pod s'exécutera uniquement sur les noeuds possédant le libellé foo=bar ou foo2=bar2.

numOfReplicas numOfReplicas Nombre de répliques du déploiement de l'extension.
Non utilisé par:
  • Module d'extension GPU AMD
  • Opérateur GPU NVIDIA
  • Opérateur réseau NVIDIA
  • Pilote CSI SMB
Equivalents possibles :
  • CoreDNS, utilisez nodesPerReplica
  • Repérage des fonctionnalités de noeud, utilisez master.replicaCount
  • Opérateur de GPU AMD, utilisez controllerManager.replicas
Requis 1

Crée une réplique du déploiement d'extension par cluster.

2

Crée deux répliques du déploiement d'extension par cluster.

rollingUpdate rollingUpdate

Contrôle le comportement souhaité de la mise à jour non simultanée par maxSurge et maxUnavailable.

Format JSON en texte brut ou encodé Base64.

Non utilisé par:
  • Repérage des fonctionnalités du noeud
  • Opérateur réseau NVIDIA
  • Pilote CSI SMB
Equivalents possibles :
  • Opérateur de GPU NVIDIA, utilisez daemonsets.rollingUpdate.maxUnavailable
  • Opérateur de GPU AMD, utilisez upgradePolicy dans devicePlugin, metricsExporter, testRunner, configManager ou draDriver
Facultatif NULL NULL
tolerations tolérances

Vous pouvez utiliser des tolérances et des taches pour contrôler les noeuds de processus actif sur lesquels les pods d'extension s'exécutent.

Pour qu'un pod s'exécute sur un noeud présentant une entorse, le pod doit avoir une tolérance correspondante.

Définissez tolerations sur une paire clé/valeur correspondant à la fois à la tolérance du pod et à la tache du noeud de processus actif.

Format JSON en texte brut ou encodé Base64.

Equivalents possibles :
  • Repérage des fonctionnalités de noeud, utilisez master.tolerations et/ou worker.tolerations
  • Opérateur de GPU NVIDIA, utilisez daemonsets.tolerations
  • Opérateur réseau NVIDIA, utilisez operator.tolerations
  • Pilote CSI SMB, utilisez controller.tolerations
  • Opérateur GPU AMD, utilisez les tolérances dans devicePlugin, metricsExporter, testRunner, configManager, draDriver ou controllerManager
Facultatif NULL [{"key":"tolerationKeyFoo", "value":"tolerationValBar", "effect":"noSchedule", "operator":"exists"}]

Seuls les pods présentant cette tolérance peuvent être exécutés sur des noeuds de processus actif présentant la tache tolerationKeyFoo=tolerationValBar:noSchedule.

topologySpreadConstraints topologySpreadConstraints

Comment répartir les pods correspondants entre la topologie donnée.

Format JSON en texte brut ou encodé Base64.

Non utilisé par:
  • Repérage des fonctionnalités du noeud
  • Opérateur GPU NVIDIA
  • Opérateur réseau NVIDIA
  • Pilote CSI SMB
  • Opérateur de GPU AMD
Facultatif NULL NULL
Arguments de configuration propres à ce module complémentaire de cluster
Clé (API et CLI) Nom d'affichage de la clé (console) Description Obligatoire/Facultatif Valeur par défaut Exemple de valeur
authSecretName authSecretName Nom de la clé secrète Kubernetes à utiliser pour l'authentification utilisateur lorsque authType est défini sur user. Facultatif "" oci-config
authType authType Type d'authentification utilisé par le contrôleur d'entrée natif OCI lors de l'envoi de demandes, parmi les suivants :
  • instance indique le principal d'instance (noeuds gérés uniquement).
  • user indique le principal de l'utilisateur (noeuds gérés et virtuels).
  • workloadIdentity indique l'identité de la charge globale (noeuds gérés et virtuels).
Facultatif instance workloadIdentity
certDeletionGracePeriodInDays certDeletionGracePeriodInDays

Nombre de jours pendant lesquels le contrôleur d'entrée natif OCI attend avant de supprimer les ressources de service OCI Certificates non utilisées. S'applique lorsque le contrôleur d'entrée natif OCI obtient un certificat du service Certificates à l'aide d'une clé secrète Kubernetes.

Doit être une valeur entière. Si la valeur est inférieure ou égale à zéro, le contrôleur d'entrée natif OCI ne supprime pas les ressources de service OCI Certificates inutilisées.

Facultatif 0 1
compartmentId compartmentId OCID du compartiment dans lequel le contrôleur d'entrée natif OCI doit créer l'équilibreur de charge OCI (et le certificat, si l'argument d'extension useLbCompartmentForCertificates est défini sur false). Requis "" ocid1.compartment.oc1..aaaaaaaa______ddq
controllerClass controllerClass Nom du contrôleur spécifié dans votre ingressClass qui doit être géré par le contrôleur oci-native-ingress-controller. Facultatif oci.oraclecloud.com/native-ingress-controller oci.oraclecloud.com/native-ingress-controller
emitEvents emitEvents

Indique si des événements Kubernetes doivent être émis pour les erreurs entrantes et IngressClass observées lors du rapprochement.

Si la valeur est true, les événements sont émis.

Facultatif false false
leaseLockName leaseLockName Nom du bail à utiliser pour l'élection du leader. Facultatif oci-native-ingress-controller oci-native-ingress-controller
leaseLockNamespace leaseLockNamespace Espace de noms du bail. Facultatif native-ingress-controller-system native-ingress-controller-system
loadBalancerSubnetId loadBalancerSubnetId OCID du sous-réseau de l'équilibreur de charge. Requis "" ocid1.subnet.oc1.iad.aaaaaaaa______dba
logVerbosity logVerbosity Numéro de niveau de détail de la journalisation. Facultatif 4 2
metricsBackend metricsBackend Nom du back-end de mesures. Facultatif prometheus prometheus
metricsPort metricsPort Port des mesures. Facultatif 2223 2223
oci-native-ingress-controller.ContainerResources ressources de conteneur native-ingress-controller

Vous pouvez spécifier les quantités de ressources demandées par les conteneurs d'extension et définir les limites d'utilisation des ressources que les conteneurs d'extension ne peuvent pas dépasser.

Format JSON en texte brut ou encodé Base64.

Facultatif NULL {"limits": {"cpu": "500m", "memory": "200Mi" }, "requests": {"cpu": "100m", "memory": "100Mi"}}

Créez des conteneurs d'extension qui demandent 100 milllicores de CPU et 100 mégaoctets de mémoire. Limitez les conteneurs d'extension à 500 milllicores de CPU et 200 mégaoctets de mémoire.

useLbCompartmentForCertificates useLbCompartmentForCertificates

Indique si le compartiment indiqué pour l'équilibreur de charge OCI (dans la ressource IngressClassParameters associée) doit être utilisé pour gérer les ressources du service OCI Certificates lors de l'utilisation d'une clé secrète Kubernetes pour obtenir un certificat et un package d'autorité de certification. Reportez-vous à Option 1 : le contrôleur d'entrée natif OCI obtient un certificat du service Certificates à l'aide d'une clé secrète Kubernetes.

Si elle est définie sur false, le compartiment indiqué par l'argument d'extension compartmentId est utilisé.

Facultatif false false
Considérations relatives aux clusters volumineux

Le tableau suivant décrit les considérations relatives à la configuration de ce module complémentaire de cluster dans les clusters volumineux.

Nom d'argument Nombre de noeuds de processus métier de rôles Description à mesure que la taille du cluster augmente Risques Recommandation
affinity N

Contrôle le placement des pods Native Ingress Controller en fonction des règles d'affinité de pod et d'anti-affinité de pod.

Non applicable Non applicable Non applicable
nodeSelectors N

Contrôle le placement des pods Native Ingress Controller en fonction des étiquettes de noeud.

Non applicable Non applicable Non applicable
numOfReplicas N

Contrôle le nombre de répliques dans le déploiement du contrôleur d'entrée natif.

Non applicable Non applicable Non applicable
rollingUpdate N

Contrôle la stratégie de mise à jour du déploiement, y compris les paramètres tels que maxSurge et maxUnavailable .

Non applicable Non applicable Non applicable
tolerations N

Contrôle si les pods Native Ingress Controller peuvent être exécutés sur des noeuds endommagés.

Non applicable Non applicable Non applicable
topologySpreadConstraints N

Contrôle la façon dont les pods Native Ingress Controller correspondants sont distribués dans la topologie de cluster à l'aide de paramètres tels que maxSkew et minDomains .

Non applicable Non applicable Non applicable
oci-native-ingress-controller.ContainerResources Y (Oui)

Définit les demandes et les limites de CPU et de mémoire pour le pod Native Ingress Controller.

Le contrôleur examine les noeuds pour identifier les back-ends d'équilibreur de charge disponibles. L'utilisation de la CPU et de la mémoire augmente donc à mesure que le nombre de noeuds augmente.

Lorsque externalTrafficPolicy est défini sur Cluster , le cache d'indicateurs de noeud peut contenir des informations de back-end pour chaque noeud. Dans un cluster avec environ 20 000 noeuds, le traitement des informations de back-end au cours de chaque cycle de synchronisation peut devenir un goulet d'étranglement de ressource.

Lorsque externalTrafficPolicy est défini sur Local , le volume de synchronisation back-end est sensiblement plus faible car seuls les noeuds avec des back-ends locaux sont inclus.

  • Le rapprochement du back-end peut entraîner une pression importante sur l'UC et la mémoire.
  • Les cycles de synchronisation peuvent devenir lents lorsque le contrôleur traite les informations du back-end sur des milliers de noeuds.
  • Si une demande de back-end dépasse la limite d'équilibreur de charge de 512 back-ends, le plan de contrôle de l'équilibreur de charge rejette la mise à jour.
  • Les mises à jour rejetées à plusieurs reprises peuvent laisser des back-ends obsolètes configurés sur l'équilibreur de charge.

Une CPU et une limite élevées sont attendues avec externalTrafficPolicy défini sur Cluster. Modéré requis si externalTrafficPolicy est défini sur Local. Avec Local, les vérifications de l'état de la stratégie de trafic externe sont limitées aux noeuds ou pods avec des back-ends locaux, jusqu'à la limite de back-end de l'équilibreur de charge.

routingStrategies.hostBasedRouting N

Achemine les demandes vers un service en fonction du nom de domaine dans la demande.

Non applicable Non applicable Non applicable
routingStrategies.pathBasedRouting N

Achemine les demandes vers un service en fonction du chemin de demande ou de l'adresse d'API.

Non applicable Non applicable Non applicable
routingStrategies.defaultRouting N

Achemine les demandes qui ne correspondent pas à une autre règle vers le service back-end par défaut.

Non applicable Non applicable Non applicable
NIC annotations Y (Oui)

Configurez le contrôleur entrant natif et le comportement de l'équilibreur de charge, y compris les paramètres de vérification de l'état du back-end.

Les performances de routage de l'équilibreur de charge restent limitées par le nombre maximal de back-ends 512 plutôt que par le nombre total de noeuds de cluster.

Cependant, la stratégie de trafic externe sélectionnée affecte l'utilisation des ressources du contrôleur :

  • Avec externalTrafficPolicy: Cluster , les vérifications de l'état peuvent être ventilées sur tous les noeuds de cluster, ce qui crée une surcharge significative dans un cluster avec environ 20 000 noeuds.
  • Avec externalTrafficPolicy: Local , les vérifications de l'état sont limitées aux noeuds ou pods avec des back-ends locaux, jusqu'à la limite de back-end de l'équilibreur de charge.
  • Le ventilateur de vérification de l'état à l'échelle du cluster peut considérablement augmenter l'utilisation de la CPU et de la mémoire.
  • La mise à jour de la configuration de la vérification de l'état peut entraîner la réévaluation des pods back-end dans le cluster par le contrôleur.
  • Des conflits de CPU et de mémoire peuvent survenir même lorsque externalTrafficPolicy est défini sur Local .

Reportez-vous aux meilleures pratiques en matière de vérification de l'état du back-end et de l'équilibreur de charge.