Hello Minikube
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.
Objectifs
- Déployez une application Hello World sur Minikube.
- Lancez l'application.
- Afficher les journaux des applications.
Pré-requis
Ce tutoriel fournit une image de conteneur construite à partir des fichiers suivants :
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);
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 de Docker.
Créer un cluster Minikube
-
Cliquez sur Lancer le terminal.
Note: Si vous avez installé Minikube localement, lancezminikube start
. -
Ouvrez le tableau de bord Kubernetes dans un navigateur :
minikube dashboard
-
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.
-
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.
-
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=k8s.gcr.io/echoserver:1.4
-
Affichez le déploiement :
kubectl get deployments
Sortie :
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE hello-node 1 1 1 1 1m
-
Voir le Pod :
kubectl get pods
Sortie :
NAME READY STATUS RESTARTS AGE hello-node-5f76cf6ccf-br9b5 1/1 Running 0 1m
-
Afficher les événements du cluster :
kubectl get events
-
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 cluster Kubernetes.
Pour rendre le conteneur hello-node
accessible depuis l'extérieur du réseau virtuel Kubernetes, vous devez exposer le Pod comme un Service Kubernetes.
-
Exposez le Pod à internet 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. -
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 commandeminikube service
. -
Exécutez la commande suivante :
minikube service hello-node
-
Environnement Katacoda seulement : Cliquez sur le signe plus, puis cliquez sur Sélectionner le port pour afficher sur l'hôte 1.
-
Environnement Katacoda seulement : Tapez
30369
(voir port en face de8080
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 extensions
Minikube dispose d'un ensemble d'extensions intégrées qui peuvent être activées, désactivées et ouvertes dans l'environnement Kubernetes local.
-
Énumérer les extensions 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
-
Activez une extension, par exemple,
heapster
:minikube addons enable heapster
Sortie :
heapster was successfully enabled
-
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
-
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 la VM Minikube :
minikube delete
A suivre
- En savoir plus sur les déploiement.
- En savoir plus sur le Déploiement d'applications.
- En savoir plus sur les Services.