Recherche de site Web

Comment déployer Nginx sur un cluster Kubernetes


Dans notre dernier article, nous avons expliqué comment configurer et exécuter un cluster Kubernetes. Voyons comment déployer le service NGINX sur notre cluster.

J'exécuterai ce déploiement sur une machine virtuelle hébergée par un fournisseur de cloud public. Comme c'est le cas pour de nombreux services de cloud public, beaucoup maintiennent généralement un schéma IP public et privé pour leurs machines virtuelles.

Environnement de test

Master Node - Public IP: 104.197.170.99 and Private IP: 10.128.15.195
Worker Node 1 - Public IP: 34.67.149.37 and Private IP: 10.128.15.196
Worker Node 2 - Public IP: 35.232.161.178 and Private IP: 10.128.15.197

Déployer NGINX sur un cluster Kubernetes

Nous exécuterons ce déploiement à partir du nœud maître.

Commençons par vérifier l’état du cluster. Tous vos nœuds doivent être dans l'état PRÊT.

kubectl get nodes

Nous créons un déploiement de NGINX à l'aide de l'image NGINX.

kubectl create deployment nginx --image=nginx

Vous pouvez maintenant voir l'état de votre déploiement.

kubectl get deployments

Si vous souhaitez voir plus de détails sur votre déploiement, vous pouvez exécuter la commande describe. Par exemple, il est possible de déterminer combien de répliques du déploiement sont en cours d'exécution. Dans notre cas, nous nous attendons à voir une réplique de 1 en cours d'exécution (c'est-à-dire des répliques 1/1).

kubectl describe deployment nginx

Maintenant que votre déploiement Nginx est actif, vous souhaiterez peut-être exposer le service NGINX à une adresse IP publique accessible sur Internet.

Exposer votre service Nginx au réseau public

Kubernetes propose plusieurs options lors de l'exposition de votre service en fonction d'une fonctionnalité appelée Types de services Kubernetes :

  1. ClusterIP – Ce type de service expose généralement le service sur une adresse IP interne, accessible uniquement au sein du cluster, et éventuellement uniquement au sein des nœuds du cluster.
  2. NodePort – Il s'agit de l'option la plus basique pour exposer votre service afin qu'il soit accessible en dehors de votre cluster, sur un port spécifique (appelé NodePort) sur chaque nœud du cluster. Nous illustrerons cette option prochainement.
  3. LoadBalancer – Cette option s'appuie sur les services externes d'équilibrage de charge proposés par divers fournisseurs pour permettre l'accès à votre service. Il s'agit d'une option plus fiable lorsque l'on pense à la haute disponibilité de votre service et offre davantage de fonctionnalités au-delà de l'accès par défaut.
  4. ExternalName : ce service redirige le trafic vers des services en dehors du cluster. En tant que tel, le service est mappé sur un nom DNS qui pourrait être hébergé hors de votre cluster. Il est important de noter que cela n’utilise pas de proxy.

Le type de service par défaut est ClusterIP.

Dans notre scénario, nous souhaitons utiliser le type de service NodePort car nous avons à la fois une adresse IP publique et privée et nous n'avons pas besoin d'un équilibreur de charge externe pour l'instant. Avec ce type de service, Kubernetes attribuera ce service aux ports de la gamme 30 000+.

kubectl create service nodeport nginx --tcp=80:80

Exécutez la commande get svc pour voir un résumé du service et des ports exposés.

kubectl get svc

Vous pouvez maintenant vérifier que la page Nginx est accessible sur tous les nœuds à l'aide de la commande curl.

curl master-node:30386
curl node-1:30386
curl node-2:30386

Comme vous pouvez le constater, la page « BIENVENUE CHEZ NGINX ! » est accessible.

Atteindre les adresses IP PUBLIQUES éphémères

Comme vous l'avez peut-être remarqué, Kubernetes signale que je n'ai aucune adresse IP publique active enregistrée, ou plutôt aucune adresse IP EXTERNE enregistrée.

kubectl get svc

Vérifions si c'est bien vrai, que je n'ai aucune IP EXTERNE attachée à mes interfaces à l'aide de la commande IP.

ip a

Aucune IP publique comme vous pouvez le voir.

Comme mentionné précédemment, j'exécute actuellement ce déploiement sur une machine virtuelle proposée par un fournisseur de cloud public. Ainsi, bien qu’aucune interface particulière ne soit dotée d’une adresse IP publique, le fournisseur de VM a émis une adresse IP externe éphémère.

Une adresse IP externe éphémère est une adresse IP temporaire qui reste attachée à la VM jusqu'à l'arrêt de l'instance virtuelle. Lorsque l'instance virtuelle est redémarrée, une nouvelle adresse IP externe est attribuée. En termes simples, il s’agit d’un moyen simple pour les fournisseurs de services de tirer parti des adresses IP publiques inactives.

Le défi ici, outre le fait que votre IP publique n'est pas statique, est que l'IP publique éphémère est simplement une extension (ou proxy) de l'IP privée, et pour cette raison, le service accessible uniquement sur le port 30386. Cela signifie que le service sera accessible sur l'URL , c'est-à-dire 104.197.170.99, qui si vous cochez votre navigateur, vous devriez pouvoir voir la page d'accueil.

Grâce à cela, nous avons déployé avec succès NGINX sur notre cluster Kubernetes à 3 nœuds.