Recherche de site Web

Comment déployer Nginx sur un cluster Kubernetes


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

Je vais exécuter 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 d’entre eux maintiennent généralement un schéma d’adresses IP publiques et privées 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éploiement de NGINX sur un cluster Kubernetes

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

Commençons par vérifier l’état du cluster. Tous vos nœuds doivent être à 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 obtenir plus de détails sur votre déploiement, vous pouvez exécuter la commande décrire. Par exemple, il est possible de déterminer le nombre de réplicas du déploiement 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 pouvez exposer le service NGINX à une adresse IP publique accessible sur Internet.

Exposition de votre service Nginx au réseau public

Kubernetes offre plusieurs options lors de l’exposition de votre service en fonction d’une fonctionnalité appelée Kubernetes Service-types :

  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 sous peu.
  3. LoadBalancer – Cette option s’appuie sur les services d’équilibrage de charge externes proposés par divers fournisseurs pour permettre l’accès à votre service. Il s’agit d’une option plus fiable lorsque vous envisagez une haute disponibilité pour votre service, et elle comporte plus de fonctionnalités que l’accès par défaut.
  4. ExternalName : ce service effectue une redirection du trafic vers des services en dehors du cluster. En tant que tel, le service est donc mappé à un nom DNS qui peut être hébergé en dehors 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 voulons utiliser le type de service NodePort, car nous avons à la fois une adresse IP publique et une adresse IP privée et nous n’avons pas besoin d’un équilibreur de charge externe pour le moment. Avec ce type de service, Kubernetes attribuera ce service sur des ports de la plage 30000+.

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

Exécutez la commande get svc pour afficher 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 voir, la page « BIENVENUE CHEZ NGINX ! » est accessible.

Atteindre des 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 s’il est vrai que je n’ai pas d’IP EXTERNE attachée à mes interfaces à l’aide de la commande IP.

# ip a

Pas d’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 n’ait attribué d’adresse IP publique, le fournisseur de machine virtuelle 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 machine virtuelle jusqu’à ce que l’instance virtuelle soit arrêtée. Lorsque l’instance virtuelle est redémarrée, une nouvelle adresse IP externe est attribuée. En gros, 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 adresse IP publique n’est pas statique, est que l’adresse IP publique éphémère est simplement une extension (ou un proxy) de l’adresse IP privée, et pour cette raison, le service ne sera accessible que sur le port 30386. Cela signifie que le service sera accessible sur l’URL <PublicIP :InternalPort>, c’est-à-dire 104.197.170.99:30386, dont si vous vérifiez 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.

Articles connexes: