GNU/Linux >> Tutoriels Linux >  >> Linux

Comment créer et gérer des pods Kubernetes sous Linux

Dans ce didacticiel, nous allons apprendre à créer et à gérer des pods Kubernetes. Tout d'abord, nous allons commencer par ce qu'est un pod dans Kubernetes et comment fonctionne un pod. Ensuite, nous examinerons brièvement les types de pods. Et ensuite nous verrons comment créer un nouveau Pod et comment visualiser les informations du Pod depuis la ligne de commande. Enfin, nous apprendrons comment supprimer le pod lorsqu'il n'est plus nécessaire.

Qu'est-ce qu'un pod dans Kubernetes ?

Dans Kubernetes , les pods sont les plus petites unités informatiques déployables que vous pouvez créer et contrôler. Un pod est une collection d'un ou plusieurs conteneurs avec des ressources de stockage et de réseau partagées, ainsi qu'un ensemble de règles sur la façon dont les conteneurs doivent être exécutés.

Le contenu d'un pod est toujours colocalisé, coplanifié et exécuté dans le même environnement. Un pod représente un "hôte logique" spécifique à l'application :il comprend un ou plusieurs conteneurs d'application étroitement connectés.

Dans la perspective Docker, un pod équivaut à un ensemble de conteneurs Docker avec des espaces de noms et des volumes de système de fichiers communs.

Types de modules Kubernetes

Dans un cluster Kubernetes, il existe deux types de pods.

  • POD de conteneur unique : Le cas d'utilisation le plus fréquent de Kubernetes est l'approche "un conteneur par pod" ; dans ce scénario, considérez un pod comme un wrapper sur un seul conteneur ; Kubernetes gère directement les pods plutôt que les conteneurs.
  • POD conteneurs multiples : Un pod peut encapsuler une application composée de nombreux conteneurs étroitement connectés qui doivent partager des ressources. Ces conteneurs sont regroupés pour former une seule unité de service et ces conteneurs vont communiquer entre eux.

Comment fonctionne le POD ?

Chaque pod est conçu pour exécuter une seule instance d'application. Vous pouvez utiliser plusieurs pods, un pour chaque instance, si vous avez besoin d'étendre votre application horizontalement. Ceci est communément appelé réplication dans Kubernetes . Une ressource de charge de travail et son contrôleur produisent et gèrent normalement des pods répliqués dans un groupe.

Le but ultime du Kubernetes est de déployer l'application sous forme de conteneurs dans un ensemble de machines que l'on appelle worker node dans le cluster Kubernetes.

Kubernetes ne lance pas de conteneurs directement dans le nœud, mais le ou les conteneurs sont encapsulés en tant que Pod, qui est une instance unique d'une application.

Dans un cluster Kubernetes, un nœud se compose de pods et un pod se compose de conteneurs. Par exemple, vous avez une seule instance d'une application s'exécutant dans un seul conteneur encapsulé par un pod.

Si le nombre d'utilisateurs qui accèdent à l'application augmente, vous devez faire évoluer votre application. Dans ce cas, vous devrez peut-être créer des instances supplémentaires pour partager la charge.

Pour faire évoluer l'application, vous devez créer un nouveau pod supplémentaire dans le nœud avec la même application. Si la charge augmente encore et que le nœud actuel n'a plus de capacité, vous devez disposer d'un nœud supplémentaire pour faire tourner les pods avec le même conteneur d'application.

De même, pour réduire, vous devez supprimer le pod existant.

J'espère que vous avez compris l'idée de base des pods Kubernetes. Voyons maintenant comment créer et gérer des pods dans Kubernetes.

Avant de commencer, assurez-vous d'avoir installé Kubernetes sur votre système. Les liens suivants contiennent des instructions sur la configuration d'un déploiement de cluster Kubernetes à nœud unique et multinœud sous Linux.

  • Comment installer Kubernetes à l'aide de Minikube dans CentOS Linux
  • Installer le cluster Kubernetes à l'aide de Kubeadm dans RHEL, CentOS, AlmaLinux, Rocky Linux

Une fois Kubernetes installé, vous pouvez commencer à créer des pods.

En règle générale, vous n'avez pas besoin de créer directement des pods, même des pods singleton. Au lieu de cela, créez-les à l'aide de ressources de charge de travail telles que le déploiement ou Emploi . Un déploiement fournit des mises à jour déclaratives pour les pods et les ReplicaSets.

Créer un déploiement

Créez un exemple de déploiement à l'aide d'une image existante "echoserver" . C'est un simple serveur HTTP et nous pouvons l'exposer sur le port 8080 en utilisant --port option.

Une image conteneur est un fichier qui encapsule un programme et toutes ses dépendances logicielles dans des données binaires. Les images de conteneur sont des packages logiciels exécutables indépendants qui font des hypothèses extrêmement spécifiques sur leur environnement d'exécution.

Dans cet article, nous allons passer en revue toutes les démonstrations dans un cluster à nœud unique .

Vous pouvez connaître les détails du nœud en exécutant la commande ci-dessous en tant que root utilisateur

# kubectl get nodes

Exemple de résultat :

NAME        STATUS   ROLES    AGE   VERSION
ostechnix   Ready    Master   25h   v1.22.3

Maintenant, déployez un exemple d'application appelé "hello-ostechnix" en utilisant la commande ci-dessous. Vous pouvez le nommer selon votre convenance.

# kubectl create deployment hello-ostechnix --image=k8s.gcr.io/echoserver:1.10

Exemple de résultat :

deployment.apps/hello-ostechnix created
[[email protected] ~]#

Le déploiement est créé, vérifiez le déploiement à l'aide de la commande ci-dessous.

# kubectl get deployments

Exemple de résultat :

NAME              READY   UP-TO-DATE   AVAILABLE   AGE
hello-ostechnix   1/1     1            1           85s

Déploiement d'accès

Pour accéder à ce déploiement en tant que service, vous devez l'exposer en tant que service. Utilisez la commande ci-dessous pour exposer le déploiement sur le port 8080 .

# kubectl expose deployment hello-ostechnix --type=NodePort --port=8080

Exemple de résultat :

service/hello-ostechnix exposed

Utilisez la commande ci-dessous pour obtenir l'URL du service exposé.

# minikube service hello-ostechnix --url

Exemple de résultat :

http://192.168.181.131:30525

Copiez l'URL et collez-la dans votre navigateur, elle listera les détails de l'application déployée.

Assurez-vous que le port 30525 est autorisé dans votre routeur ou votre pare-feu. Si ce port est bloqué, vous ne pouvez pas afficher les informations du pod dans le navigateur.

Supprimer le déploiement

Tout d'abord, supprimez le service "hello-ostechnix" à l'aide de la commande :

# kubectl delete services hello-ostechnix

Exemple de résultat :

service "hello-ostechnix" deleted

Ensuite, supprimez le déploiement "hello-ostechnix":

# kubectl delete deployment hello-ostechnix

Exemple de résultat :

deployment.apps "hello-ostechnix" deleted

Une fois que vous avez supprimé le déploiement, le pod associé à l'application sera fermé. La résiliation prendra quelques secondes.

# kubectl get pods

Exemple de résultat :

NAME                               READY   STATUS        RESTARTS   AGE
hello-ostechnix-5d4cf4df75-jlwff   1/1     Terminating   0          57m

Une fois le déploiement terminé, l'application ne sera plus accessible.

# kubectl get pods

Exemple de sortie :

No resources found in default namespace.

Exécuter des pods avec des images

Nous pouvons utiliser le 'kubectl run ' pour créer et exécuter une application dans un pod.

$ kubectl run <POD name> --image=<image name>

Ici, le nom du pod peut être n'importe quoi et le nom de l'image doit être spécifique, ce qui serait disponible dans Docker Hub ou dans n'importe quel référentiel local.

Créons un pod avec une image Nginx.

# kubectl run ostechnix-nginx --image=nginx

Exemple de résultat :

pod/ostechnix-nginx created

Un Pod nommé 'ostechnix-nginx' a été créé. Vous pouvez vérifier l'état du pod à l'aide de la commande ci-dessous.

# kubectl get pods

Exemple de résultat :

NAME              READY   STATUS    RESTARTS   AGE
ostechnix-nginx   1/1     Running   0          4m20s

Vous pouvez obtenir des informations supplémentaires telles que l'endroit où le pod s'exécute et l'adresse IP du pod en utilisant le 'wide '.

# kubectl get pods -o wide

Exemple de résultat :

NAME              READY   STATUS    RESTARTS   AGE   IP           NODE        NOMINATED NODE   READINESS GATES
ostechnix-nginx   1/1     Running   0          38m   172.17.0.6   ostechnix   <none>           <none>

Vous pouvez obtenir des informations complètes sur le POD en utilisant le 'kubectl describe ' commande.

# kubectl describe pod ostechnix-nginx

Cette commande vous donnera les détails complets du POD comme les détails du conteneur et ses états, les détails des événements qui se sont produits depuis la création du pod.

Name:         ostechnix-nginx
Namespace:    default
Priority:     0
Node:         ostechnix/192.168.181.131
Start Time:   Thu, 03 Feb 2022 01:40:48 -0800
Labels:       run=ostechnix-nginx
Annotations:  <none>
Status:       Running
IP:           172.17.0.6
IPs:
  IP:  172.17.0.6
Containers:
  ostechnix-nginx:
    Container ID:   docker://29eeb0392247aef193d6dff0138f8ef132dfb6359d8e67c3a5e4a21d7e259989
    Image:          nginx
    Image ID:       docker-pullable://[email protected]:2834dc507516af02784808c5f48b7cbe38b8ed5d0f4837f16e78d00deb7e7767
    Port:           <none>
    Host Port:      <none>
    State:          Running
      Started:      Thu, 03 Feb 2022 01:40:54 -0800
    Ready:          True
    Restart Count:  0
    Environment:    <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-ggvk6 (ro)
Conditions:
  Type              Status
  Initialized       True
  Ready             True
  ContainersReady   True
  PodScheduled      True
Volumes:
  kube-api-access-ggvk6:
    Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  3607
    ConfigMapName:           kube-root-ca.crt
    ConfigMapOptional:       <nil>
    DownwardAPI:             true
QoS Class:                   BestEffort
Node-Selectors:              <none>
Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                             node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
  Type    Reason     Age    From               Message
  ----    ------     ----   ----               -------
  Normal  Scheduled  7m26s  default-scheduler  Successfully assigned default/ostechnix-nginx to ostechnix
  Normal  Pulling    7m24s  kubelet            Pulling image "nginx"
  Normal  Pulled     7m20s  kubelet            Successfully pulled image "nginx" in 4.114836826s
  Normal  Created    7m20s  kubelet            Created container ostechnix-nginx
  Normal  Started    7m20s  kubelet            Started container ostechnix-nginx
[[email protected] ~]#

Une fois que vous avez terminé, vous pouvez supprimer le pod en utilisant le 'kubectl delete ' commande.

# kubectl delete pod ostechnix-nginx

Exemple de résultat :

pod "ostechnix-nginx" deleted

Vérifiez si le pod est supprimé en répertoriant les pods disponibles :

# kubectl get pods
No resources found in default namespace.

Conclusion

Dans ce didacticiel, nous avons abordé le concept de Pod dans Kubernetes, un déploiement d'application simple et comment exécuter un Pod. Nous aurons plus de détails sur la création de Pod avec YAML fichier de définition dans nos prochains détails.


Linux
  1. Comment créer des liens matériels et symboliques sous Linux

  2. Comment gérer l'expiration et le vieillissement du mot de passe utilisateur sous Linux

  3. Comment gérer et répertorier les services sous Linux

  4. Comment déployer votre premier pod sur un cluster Kubernetes

  5. Comment supprimer des pods dans Kubernetes [Quick K8s Tips]

Comment créer et utiliser un fichier d'échange sous Linux

Compte FTP :comment le créer et le gérer

Comment créer et gérer des machines virtuelles dans KVM

Comment créer et gérer de nouveaux utilisateurs sous Linux

Commande Linux crontab pour créer et gérer des tâches Cron

Comment détecter et gérer les appareils sous Linux