Lorsque vous utilisez le contrôleur NGINX Ingress, les pods qui l'exécutent servent de points d'entrée et de redirection du trafic. Leur fiabilité détermine la fiabilité globale du contrôleur. Par défaut, deux pods sont déployés après l'installation, ce qui suffit dans la plupart des scénarios. Vous pouvez garantir une haute fiabilité en ajustant le nombre de pods et leur méthode de planification.
Prérequis
Le contrôleur NGINX Ingress est installé. Pour plus d'informations, consultez la rubrique Gérer le composant Nginx Ingress Controller.
Un client kubectl est connecté au cluster ACK. Pour plus d'informations, consultez la rubrique Se connecter à un cluster ACK à l'aide de kubectl.
Afficher les pods par défaut du contrôleur NGINX Ingress
Une fois le contrôleur NGINX Ingress installé, une application provisionnant deux pods est déployée dans le cluster.
Exécutez la commande suivante pour afficher les pods du contrôleur NGINX Ingress :
kubectl -n kube-system get pod | grep nginx-ingress-controller
Résultat attendu :
nginx-ingress-controller-*****nxs 1/1 Running 0 3h
nginx-ingress-controller-*****9pm 1/1 Running 0 3h
Garantir la haute fiabilité du contrôleur NGINX Ingress
Par défaut, le contrôleur NGINX Ingress utilise une configuration d'affinité qui limite le déploiement à un seul pod par nœud. Assurez-vous que le nombre de pods ne dépasse pas le nombre de nœuds du cluster.
Augmenter le nombre de pods du contrôleur
Augmenter le nombre de pods du contrôleur permet d'éviter les interruptions dues à la défaillance d'un pod unique.
-
Exécutez la commande
kubectl scalepour mettre à l'échelle le déploiement du contrôleur NGINX Ingress. La commande suivante porte le nombre de pods à trois.kubectl -n kube-system scale --replicas=3 deployment/nginx-ingress-controllerRésultat attendu :
deployment.extensions/nginx-ingress-controller scaled -
Exécutez la commande suivante pour afficher les pods du contrôleur NGINX Ingress :
kubectl -n kube-system get pod | grep nginx-ingress-controllerRésultat attendu :
nginx-ingress-controller-******** 1/1 Running 0 3h nginx-ingress-controller-******** 1/1 Running 0 3h nginx-ingress-controller-******** 1/1 Running 0 33s
Planifier les pods sur des nœuds aux spécifications élevées
La planification des pods sur des nœuds aux spécifications élevées évite la dégradation des performances ou l'éviction des pods due à l'insuffisance des ressources du nœud.
-
Exécutez la commande suivante pour afficher l'utilisation actuelle des ressources du cluster :
kubectl top nodesRésultat attendu :
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY% cn-shanghai.********.230 71m 1% 1712Mi 31% cn-shanghai.********.226 63m 1% 1669Mi 30% cn-shanghai.********.229 125m 3% 2545Mi 46% cn-shanghai.********.253 152m 3% 3804Mi 69%Le résultat affiche les ressources CPU et mémoire déjà utilisées par chaque nœud. Sélectionnez les nœuds disposant des ressources disponibles les plus importantes pour la planification.
-
Exécutez la commande suivante pour ajouter le libellé
node-role.kubernetes.io/ingress="true"aux nœuds. Dans l'exemple suivant, le libellé est ajouté aux nœudscn-shanghai.********.226etcn-shanghai.********.230qui disposent des ressources CPU disponibles les plus importantes.ImportantLe nombre de nœuds étiquetés doit être supérieur ou égal au nombre de pods. Si le nombre de nœuds étiquetés est inférieur au nombre de pods du contrôleur, certains pods risquent de ne pas être déployés.
Si vous utilisez un ACK dedicated cluster, n'ajoutez pas de libellés aux nœuds Master.
kubectl label nodes cn-shanghai.********.226 cn-shanghai.********.230 node-role.kubernetes.io/ingress="true"Résultat attendu :
node/cn-shanghai.********.226 labeled node/cn-shanghai.********.230 labeled -
Exécutez la commande suivante pour mettre à jour le déploiement du contrôleur NGINX Ingress en ajoutant la configuration
nodeSelector. Cela garantit que les pods du contrôleur ne sont déployés que sur les nœuds portant le libellénode-role.kubernetes.io/ingress="true".kubectl -n kube-system patch deployment nginx-ingress-controller -p '{"spec": {"template": {"spec": {"nodeSelector": {"node-role.kubernetes.io/ingress": "true"}}}}}'Résultat attendu :
deployment.extensions/nginx-ingress-controller patched -
Exécutez la commande suivante pour afficher les pods Ingress déployés sur les nœuds du cluster portant le libellé
node-role.kubernetes.io/ingress="true".kubectl -n kube-system get pod -o wide | grep nginx-ingress-controllerRésultat attendu :
nginx-ingress-controller-*****nxs 1/1 Running 0 74m 10.1.117.186 cn-shanghai.********.230 nginx-ingress-controller-*****9pm 1/1 Running 0 74m 10.1.117.172 cn-shanghai.********.226