Comment déployer Nginx sur un cluster Kubernetes

Comment déployer Nginx sur un cluster Kubernetes

Dans notre dernier article, nous avons discuté de la façon de configurer et d'exécuter un cluster Kubernetes, discutons de la façon dont nous pouvons déployer Nginx Service 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 avec de nombreux services de cloud public, beaucoup conservent généralement un schéma IP public et privé pour leurs machines virtuelles.

Environnement de test

Node maître - IP publique: 104.197.170.99 et IP privé: 10.128.15.195 Nœud de travailleur 1 - IP publique: 34.67.149.37 et IP privé: 10.128.15.196 Node de travailleur 2 - IP publique: 35.232.161.178 et IP privé: 10.128.15.197 

Déploiement de 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 un PRÊT État.

# kubectl obtenir des nœuds 
Vérifiez l'état du cluster de Kubernetes

Nous créons un déploiement de Nginx en utilisant le Nginx image.

# kubectl créer le déploiement nginx --image = nginx 
Déploiement de Nginx sur Kubernetes

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

# Kubectl obtient des déploiements 
Vérifiez le déploiement de Nginx sur Kubernetes

Si vous souhaitez voir plus de détails sur votre déploiement, vous pouvez exécuter le décrire commande. Par exemple, il est possible de déterminer le nombre de répliques du déploiement. Dans notre cas, nous nous attendons à voir une réplique de 1 course (i.e 1/1 les répliques).

# kubectl décrivez le déploiement nginx 
Vérifiez les détails du déploiement de Nginx

Maintenant, votre déploiement Nginx est actif, vous voudrez peut-être exposer le Nginx Service à une IP publique accessible sur Internet.

Exposer votre service Nginx au réseau public

Kubernetes propose plusieurs options lors de l'exposition de votre service sur la base d'une fonctionnalité appelée Kubernetes Service-Types et ils sont:

  1. Cluster - Ce type de service expose généralement le service sur une IP interne, accessible uniquement dans le cluster, et peut-être uniquement dans les nodes de cluster.
  2. Nodeport - Il s'agit de l'option la plus élémentaire d'exposer votre service à être accessible en dehors de votre cluster, sur un port spécifique (appelé le Nodeport) sur chaque nœud du cluster. Nous illustrons cette option sous peu.
  3. Chargeur de chargeur - Cette option tire parti des services externes d'équilibrage de charge offerts par divers fournisseurs pour permettre l'accès à votre service. Il s'agit d'une option plus fiable lorsque vous réfléchissez à la haute disponibilité pour votre service, et a plus de fonctionnalité au-delà de l'accès par défaut.
  4. Nom externe - Ce service est redirigé vers les services en dehors du cluster. En tant que tel, le service est ainsi mappé à 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 Cluster.

Dans notre scénario, nous voulons utiliser le Type de service Parce que nous avons à la fois une adresse IP publique et privée et que nous n'avons pas besoin d'un équilibreur de charge externe pour l'instant. Avec ce type de service, Kubernetes affectera ce service sur les ports sur le 30000+ gamme.

# Kubectl Créer le service NONDEPORT NGINX --TCP = 80: 80 
Créer un service Nodeport pour exposer Nginx

Courir le Obtenez SVC commande de voir un résumé du service et des ports exposés.

# Kubectl Get SVC 
Vérifiez le service et le port NGINX

Vous pouvez maintenant vérifier que le Nginx La page 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 
Vérifiez la page Nginx sur le cluster Kubernetes

Comme vous pouvez le voir, le «BIENVENUE À NGINX!»La page peut être atteinte.

Atteindre les adresses IP publiques éphémères

Comme vous l'avez peut-être remarqué, Kubernetes rapporte que je n'ai pas de propriété publique publique active enregistrée, ni plutôt.

# Kubectl Get SVC 
Vérifiez le service et le port NGINX

Voyons si c'est vraiment vrai que je n'ai pas de propriété intellectuelle externe attachée à mes interfaces à l'aide de la commande IP.

# ip a 
Vérifier les adresses IP

Pas de propriété publique publique comme vous pouvez le voir.

Comme mentionné précédemment, j'exécute actuellement ce déploiement sur un Machine virtuelle offert par un fournisseur de cloud public. Ainsi, bien qu'il n'y ait pas d'interface particulière attribuée à une IP publique, le fournisseur de machine virtuelle a publié 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 IP externe est attribuée. Fondamentalement, c'est un moyen simple pour les fournisseurs de services de tirer parti des IP publiques inactifs.

Le défi ici, à part le fait que votre IP publique n'est pas statique, c'est que le IP publique éphémère est simplement une extension (ou proxy) de l'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 , c'est 104.197.170.99: 30386, qui si vous vérifiez votre navigateur, vous devriez pouvoir voir la page de bienvenue.

Vérifiez la page Nginx déployée sur Kubernetes

Avec cela, nous avons réussi à déployer Nginx Sur notre cluster Kubernetes à 3 nœuds.