Kubernetes Object Management

L'outil en ligne de commande kubectl prend en charge plusieurs façons différentes de créer et gérer des objets Kubernetes. Ce document donne un aperçu des différentes approches. Consultez le livre Kubectl pour plus de détails sur la gestion des objets avec Kubectl.

Management techniques

Technique de gestionOpère surEnvironnement recommandéOperateurs supportésCourbe d'apprentissage
Commandes impérativesObjets en directProjets de développement1+La plus basse
Configuration impérative d'objetFichiers individuelsProjets de production1Modérée
Configuration déclarative d'objetRépertoires de fichiersProjets de production1+La plus élevée

Commandes impératives

Lors de l'utilisation de commandes impératives, un utilisateur opère directement sur des objets en direct dans un cluster. L'utilisateur fournit les opérations à la commande kubectl en tant qu'arguments ou indicateurs.

C'est la méthode recommandée pour commencer ou exécuter une tâche ponctuelle dans un cluster. Étant donné que cette technique opère directement sur des objets en direct, elle ne fournit aucune historique des configurations précédentes.

Exemples

Exécutez une instance du conteneur nginx en créant un objet Deployment :

kubectl create deployment nginx --image nginx

Compromis

Avantages par rapport à la configuration d'objet :

  • Les commandes sont exprimées par un seul mot d'action.
  • Les commandes ne nécessitent qu'une seule étape pour apporter des modifications au cluster.

Inconvénients par rapport à la configuration d'objet :

  • Les commandes ne s'intègrent pas aux processus de révision des modifications.
  • Les commandes ne fournissent pas de piste d'audit associée aux modifications.
  • Les commandes ne fournissent pas de source d'enregistrement, sauf ce qui est en direct.
  • Les commandes ne fournissent pas de modèle pour créer de nouveaux objets.

Configuration impérative d'objet

Dans la configuration impérative d'objet, la commande kubectl spécifie l'opération (créer, remplacer, etc.), des indicateurs facultatifs et au moins un nom de fichier. Le fichier spécifié doit contenir une définition complète de l'objet au format YAML ou JSON.

Consultez la référence de l'API pour plus de détails sur les définitions d'objets.

Exemples

Créez les objets définis dans un fichier de configuration :

kubectl create -f nginx.yaml

Supprimez les objets définis dans deux fichiers de configuration :

kubectl delete -f nginx.yaml -f redis.yaml

Mettre à jour les objets définis dans un fichier de configuration en écrasant la configuration en direct :

kubectl replace -f nginx.yaml

Compromis

Avantages par rapport aux commandes impératives :

  • La configuration d'objet peut être stockée dans un système de contrôle de source tel que Git.
  • La configuration d'objet peut s'intégrer à des processus tels que la révision des modifications avant la validation et les pistes d'audit.
  • La configuration d'objet fournit un modèle pour créer de nouveaux objets.

Inconvénients par rapport aux commandes impératives :

  • La configuration d'objet nécessite une compréhension de base du schéma de l'objet.
  • La configuration d'objet nécessite une étape supplémentaire consistant à rédiger un fichier YAML.

Avantages par rapport à la configuration d'objet déclarative :

  • Le comportement de la configuration d'objet impérative est plus simple et plus facile à comprendre.
  • À partir de la version 1.5 de Kubernetes, la configuration d'objet impérative est plus mature.

Inconvénients par rapport à la configuration d'objet déclarative :

  • La configuration d'objet impérative fonctionne mieux sur des fichiers, pas sur des répertoires.
  • Les mises à jour des objets en direct doivent être reflétées dans les fichiers de configuration, sinon elles seront perdues lors du prochain remplacement.

Configuration déclarative d'objet

Lors de l'utilisation de la configuration déclarative d'objet, un utilisateur opère sur des fichiers de configuration d'objet stockés localement, mais l'utilisateur ne définit pas les opérations à effectuer sur les fichiers. Les opérations de création, de mise à jour et de suppression sont automatiquement détectées par kubectl pour chaque objet. Cela permet de travailler sur des répertoires, où différentes opérations peuvent être nécessaires pour différents objets.

Exemples

Traitez tous les fichiers de configuration d'objet dans le répertoire configs et créez ou appliquez les modifications aux objets en direct. Vous pouvez d'abord utiliser diff pour voir quelles modifications vont être apportées, puis appliquer les modifications :

kubectl diff -f configs/
kubectl apply -f configs/

Traiter récursivement les répertoires :

kubectl diff -R -f configs/
kubectl apply -R -f configs/

Compromis

Avantages par rapport à la configuration impérative d'objet :

  • Les modifications apportées directement aux objets en direct sont conservées, même si elles ne sont pas fusionnées dans les fichiers de configuration.
  • La configuration déclarative d'objet offre une meilleure prise en charge pour travailler sur des répertoires et détecte automatiquement les types d'opérations (création, patch, suppression) par objet.

Inconvénients par rapport à la configuration impérative d'objet :

  • La configuration déclarative d'objet est plus difficile à déboguer et à comprendre lorsque les résultats sont inattendus.
  • Les mises à jour partielles à l'aide de diffs créent des opérations de fusion et de patch complexes.

A suivre

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