Bienvenue sur Minikube

Ce tutoriel vous montre comment exécuter une application exemple sur Kubernetes en utilisant minikube. Le tutoriel fournit une image de conteneur qui utilise NGINX pour renvoyer toutes les requêtes.

  • Déployer une application exemple sur minikube.
  • Exécuter l'application.
  • Afficher les journaux de l'application.

Ce tutoriel suppose que vous avez déjà configuré minikube. Voir Étape 1 dans [minikube start](https://minikube.pour les instructions d'installation installation instructions.

Vous devez également installer kubectl. Voir Installer les outils pour les instructions d'installation.

Créer un cluster minikube

minikube start

Ouvrir le Tableau de bord

Ouvrez le tableau de bord Kubernetes. Vous pouvez le faire de deux façons différentes :

Ouvrez un nouveau terminal, et exécutez:

# Démarrez un nouveau terminal et laissez-le en cours d'exécution..
minikube dashboard

Maintenant, revenez au terminal où vous avez exécuté minikube start.

Si vous ne souhaitez pas que minikube ouvre un navigateur pour vous, exécutez la sous-commande dashboard avec le drapeau --url. minikube affiche une URL que vous pouvez ouvrir dans le navigateur de votre choix.

Ouvrez un nouveau terminal et exécutez:

# Démarrez un nouveau terminal et laissez-le en cours d'exécution.
minikube dashboard --url

Maintenant, vous pouvez utiliser cette URL et revenir au terminal où vous avez exécuté minikube start.

Créer un Deployment

Un Pod Kubernetes est un groupe de un ou plusieurs conteneurs, liés ensemble pour les besoins de l'administration et du réseau. Le Pod de ce tutoriel n'a qu'un seul conteneur. Un Deployment Kubernetes vérifie l'état de santé de votre Pod et redémarre le conteneur du Pod s'il se termine. Les Deployments sont la méthode recommandée pour gérer la création et la mise à l'échelle des Pods.

  1. Utilisez la commande kubectl create pour créer un Deployment qui gère un Pod. Le Pod exécute un conteneur basé sur l'image Docker fournie.

    # Exécutez une image de conteneur de test qui inclut un serveur web
    kubectl create deployment hello-node --image=registry.k8s.io/e2e-test-images/agnhost:2.39 -- /agnhost netexec --http-port=8080
    
  2. Afficher le Deployment:

    kubectl get deployments
    

    La sortie ressemble à:

    NAME         READY   UP-TO-DATE   AVAILABLE   AGE
    hello-node   1/1     1            1           1m
    

    (Il peut s'écouler un certain temps avant que le pod ne soit disponible. Si vous voyez "0/1", réessayez dans quelques secondes.)

  3. Afficher le Pod:

    kubectl get pods
    

    La sortie ressemble à:

    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. Afficher la configuration kubectl:

    kubectl config view
    
  6. Afficher les journaux de l'application pour un conteneur dans un pod (remplacez le nom du pod par celui que vous avez obtenu avec la commande kubectl get pods).

    kubectl logs hello-node-5f76cf6ccf-br9b5
    

    La sortie ressemble à:

    I0911 09:19:26.677397       1 log.go:195] Started HTTP server on port 8080
    I0911 09:19:26.677586       1 log.go:195] Started UDP server on port  8081
    

Créer un Service

Par défaut, le Pod est accessible uniquement par son adresse IP interne au sein du réseau Kubernetes. Pour rendre le conteneur hello-node accessible depuis l'extérieur du réseau virtuel Kubernetes, vous devez exposer le Pod en tant que Kubernetes Service.

  1. Exposez le Pod au réseau public en utilisant la commande kubectl expose:

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

    Le drapeau --type=LoadBalancer indique que vous souhaitez exposer votre Service en dehors du cluster.

    Le code de l'application à l'intérieur de l'image de test ne répond qu'aux requêtes sur le port TCP 8080. Si vous avez utilisé kubectl expose pour exposer un port différent, les clients ne pourront pas se connecter à ce port.

  2. Afficher le Service que vous avez créé:

    kubectl get services
    

    La sortie ressemble à:

    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 prennent en charge les équilibreurs de charge, Une adresse IP externe sera provisionnée 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
    

    Cette commande ouvre une fenêtre de navigateur qui sert votre application et affiche la réponse de l'application.

Activer les extensions

La commande minikube inclut un ensemble intégré d'addons qui peuvent être activés, désactivés et ouverts dans l'environnement local Kubernetes.

  1. Liste des extensions pris en charge actuellement:

    minikube addons list
    

    La sortie ressemble à:

    addon-manager: enabled
    dashboard: enabled
    default-storageclass: enabled
    efk: disabled
    freshpod: disabled
    gvisor: disabled
    helm-tiller: disabled
    ingress: disabled
    ingress-dns: disabled
    logviewer: disabled
    metrics-server: disabled
    nvidia-driver-installer: disabled
    nvidia-gpu-device-plugin: disabled
    registry: disabled
    registry-creds: disabled
    storage-provisioner: enabled
    storage-provisioner-gluster: disabled
    
  2. Activer une extension, par exemple, metrics-server:

    minikube addons enable metrics-server
    

    La sortie ressemble à:

    The 'metrics-server' addon is enabled
    
  3. Afficher le Pod et le Service que vous avez créés en installant cette extension:

    kubectl get pod,svc -n kube-system
    

    La sortie devrait être simulaire à :

    NAME                                        READY     STATUS    RESTARTS   AGE
    pod/coredns-5644d7b6d9-mh9ll                1/1       Running   0          34m
    pod/coredns-5644d7b6d9-pqd2t                1/1       Running   0          34m
    pod/metrics-server-67fb648c5                1/1       Running   0          26s
    pod/etcd-minikube                           1/1       Running   0          34m
    pod/influxdb-grafana-b29w8                  2/2       Running   0          26s
    pod/kube-addon-manager-minikube             1/1       Running   0          34m
    pod/kube-apiserver-minikube                 1/1       Running   0          34m
    pod/kube-controller-manager-minikube        1/1       Running   0          34m
    pod/kube-proxy-rnlps                        1/1       Running   0          34m
    pod/kube-scheduler-minikube                 1/1       Running   0          34m
    pod/storage-provisioner                     1/1       Running   0          34m
    
    NAME                           TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)             AGE
    service/metrics-server         ClusterIP   10.96.241.45    <none>        80/TCP              26s
    service/kube-dns               ClusterIP   10.96.0.10      <none>        53/UDP,53/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. Vérifier la sortie de metrics-server:

    kubectl top pods
    

    La sortie ressemble à:

    NAME                         CPU(cores)   MEMORY(bytes)   
    hello-node-ccf4b9788-4jn97   1m           6Mi             
    

    Si vous voyez le message suivant, attendez un peu et réessayez:

    error: Metrics API not available
    
  5. Désactiver metrics-server:

    minikube addons disable metrics-server
    

    La sortie ressemble à:

    metrics-server 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:

# Facultatif
minikube delete

Si vous souhaitez à nouveau utiliser minikube pour en apprendre davantage sur Kubernetes, vous n'avez pas besoin de le supprimer.

Conclusion

Cette page a couvert les aspects de base pour mettre en route un cluster minikube. Vous êtes maintenant prêt à déployer des applications.

A suivre

Dernière modification December 15, 2024 at 6:24 PM PST: Merge pull request #49087 from Arhell/es-link (2c4497f)