Edit This Page

Ce tutoriel vous montre comment exécuter une simple application Hello World Node.js sur Kubernetes en utilisant Minikube et Katacoda. Katacoda fournit un environnement Kubernetes gratuit dans le navigateur.

Note: Vous pouvez également suivre ce tutoriel si vous avez installé Minikube localement.

Objectifs

Pré-requis

Ce tutoriel fournit une image de conteneur construite à partir des fichiers suivants :

minikube/server.js
var http = require('http');

var handleRequest = function(request, response) {
  console.log('Received request for URL: ' + request.url);
  response.writeHead(200);
  response.end('Hello World!');
};
var www = http.createServer(handleRequest);
www.listen(8080);
minikube/Dockerfile
FROM node:6.14.2
EXPOSE 8080
COPY server.js .
CMD node server.js

Pour plus d’informations sur la commande docker build, lisez la documentation deDocker.

Créer un cluster Minikube

  1. Cliquez sur Lancer le terminal.

    Note: Si vous avez installé Minikube localement, lancez minikube start.
  2. Ouvrez le tableau de bord Kubernetes dans un navigateur :

    minikube dashboard
  3. Environnement Katacoda seulement : En haut du volet du terminal, cliquez sur le signe plus, puis cliquez sur Sélectionner le port pour afficher sur l’hôte 1.

  4. Environnement Katacoda seulement : Tapez 30000, puis cliquez sur Afficher le port.

Créer un déploiement

Un Pod Kubernetes est un groupe d’un ou plusieurs conteneurs, liés entre eux à des fins d’administration et de mise en réseau. Dans ce tutoriel, le Pod n’a qu’un seul conteneur. Un Déploiement Kubernetes vérifie l’état de santé de votre Pod et redémarre le conteneur du Pod s’il se termine. Les déploiements sont le moyen recommandé pour gérer la création et la mise à l’échelle des Pods.

  1. Utilisez la commande kubectl create pour créer un déploiement qui gère un Pod. Le Pod utilise un conteneur basé sur l’image Docker fournie.

    kubectl create deployment hello-node --image=gcr.io/hello-minikube-zero-install/hello-node
  2. Affichez le déploiement :

    Déploiements de kubectl

    Sortie :

    NAME         DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
    hello-node   1         1         1            1           1m
  3. Voir le Pod :

    kubectl get pods

    Sortie :

    NAME                          READY     STATUS    RESTARTS   AGE
    hello-node-5f76cf6ccf-br9b5   1/1       Running   0          1m
  4. Afficher les événements du cluster :

    kubectl get events
  5. Voir la configuration de kubectl :

    kubectl config view

    Note: Pour plus d’informations sur les commandes kubectl, voir la vue d’ensemble de kubectl
    .

Créer un service

Par défaut, le Pod n’est accessible que par son adresse IP interne dans le Kubernetes cluster. Pour rendre le conteneur hello-node accessible de l’extérieur du réseau virtuel Kubernetes, vous devez exposer le Pod comme un Service Kubernetes.

  1. Exposez le Pod à l’Internet public en utilisant la commande kubectl expose :

    kubectl expose deployment hello-node --type=LoadBalancer --port=8080

    L’indicateur --type=LoadBalancer indique que vous voulez exposer votre Service à l’extérieur du cluster.

  2. Affichez le Service que vous venez de créer :

    kubectl get services

    Sortie :

    NAME         TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
    hello-node   LoadBalancer   10.108.144.78   <pending>     8080:30369/TCP   21s
    kubernetes   ClusterIP      10.96.0.1       <none>        443/TCP          23m

    Sur les fournisseurs de cloud qui supportent les load balancers, une adresse IP externe serait fournie pour accéder au Service. Sur Minikube, le type LoadBalancer rend le Service accessible via la commande minikube service.

  3. Exécutez la commande suivante :

    minikube service hello-node hello-node
  4. Environnement Katacoda seulement : Cliquez sur le signe plus, puis cliquez sur Sélectionner le port pour afficher sur l’hôte 1.

  5. Environnement Katacoda seulement : Tapez 30369 (voir port en face de 8080 dans la sortie services), puis cliquez sur Afficher le port.

    Cela ouvre une fenêtre de navigateur qui sert votre application et affiche le message Hello World.

Activer les addons

Minikube dispose d’un ensemble d’addons intégrés qui peuvent être activés, désactivés et ouverts dans l’environnement Kubernetes local.

  1. Énumérer les addons actuellement pris en charge :

    minikube addons list

    Sortie:

    addon-manager: enabled
    coredns: disabled
    dashboard: enabled
    default-storageclass: enabled
    efk: disabled
    freshpod: disabled
    heapster: disabled
    ingress: disabled
    kube-dns: enabled
    metrics-server: disabled
    nvidia-driver-installer: disabled
    nvidia-gpu-device-plugin: disabled
    registry: disabled
    registry-creds: disabled
    storage-provisioner: enabled
    
  2. Activez un addon, par exemple, heapster :

    minikube addons enable heapster

    Sortie :

    heapster was successfully enabled
  3. Affichez le pod et le service que vous venez de créer :

    kubectl get pod,svc -n kube-system

    Sortie :

    NAME                                        READY     STATUS    RESTARTS   AGE
    pod/heapster-9jttx                          1/1       Running   0          26s
    pod/influxdb-grafana-b29w8                  2/2       Running   0          26s
    pod/kube-addon-manager-minikube             1/1       Running   0          34m
    pod/kube-dns-6dcb57bcc8-gv7mw               3/3       Running   0          34m
    pod/kubernetes-dashboard-5498ccf677-cgspw   1/1       Running   0          34m
    pod/storage-provisioner                     1/1       Running   0          34m
    
    NAME                           TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)             AGE
    service/heapster               ClusterIP   10.96.241.45    <none>        80/TCP              26s
    service/kube-dns               ClusterIP   10.96.0.10      <none>        53/UDP,53/TCP       34m
    service/kubernetes-dashboard   NodePort    10.109.29.1     <none>        80:30000/TCP        34m
    service/monitoring-grafana     NodePort    10.99.24.54     <none>        80:30002/TCP        26s
    service/monitoring-influxdb    ClusterIP   10.111.169.94   <none>        8083/TCP,8086/TCP   26s
  4. Désactivez heapster :

    minikube addons disable heapster

    Sortie :

    heapster was successfully disabled

Nettoyage

Vous pouvez maintenant nettoyer les ressources que vous avez créées dans votre cluster :

kubectl delete service hello-node
kubectl delete deployment hello-node

Si nécessaire, arrêtez la machine virtuelle Minikube (VM) :

minikube stop

Si nécessaire, effacez le Minikube VM :

minikube delete

A suivre

Feedback