2 points par GN⁺ 2024-08-07 | 1 commentaires | Partager sur WhatsApp

Contrôleur de volumes persistants Kubernetes

Vue d’ensemble

  • Contrôleur qui synchronise les PersistentVolume (PV) et les PersistentVolumeClaim (PVC) de Kubernetes
  • Gère des « pointeurs » bidirectionnels entre les PVC et les PV pour éviter la perte de données
  • Fonctionne en mode haute disponibilité et prend en charge les cas où un PVC demande un PV précis ou lorsqu’un PV est réservé à un PVC précis

Fonctions principales

  • Synchronise périodiquement l’état des PVC et des PV
  • Si un PVC ne demande pas de PV précis, trouve le PV le plus approprié et le lie
  • Si un PVC demande un PV précis, vérifie que ce PV existe et remplit les conditions avant de le lier
  • Si un PVC est déjà lié, vérifie son état et le corrige si nécessaire

Mode de fonctionnement

  • Lorsque le PVC est créé ou mis à jour, appel de la méthode syncClaim
  • Si le PVC n’est pas lié, appel de la méthode syncUnboundClaim
  • Si le PVC est lié, appel de la méthode syncBoundClaim
  • Lorsque le PV est créé ou mis à jour, appel de la méthode syncVolume

Méthodes principales

syncClaim

  • Appelle syncUnboundClaim ou syncBoundClaim selon l’état du PVC

syncUnboundClaim

  • Si le PVC ne demande pas de PV précis, cherche le PV le plus approprié et tente la liaison
  • Si le PVC demande un PV précis, vérifie que ce PV existe et remplit les conditions avant de le lier

syncBoundClaim

  • Si le PVC est déjà lié, vérifie son état et le corrige si nécessaire

syncVolume

  • Exécute l’action appropriée selon l’état du PV
  • Si le PV n’est pas utilisé, met à jour son état en « Available »
  • Si le PV est lié à un PVC précis, vérifie l’état de ce PVC et le corrige si nécessaire

Résumé de GN⁺

  • Ce document fournit une explication détaillée du contrôleur de volumes persistants de Kubernetes
  • Il aide à comprendre la logique de liaison entre les volumes persistants et les PersistentVolumeClaim
  • Il traite du mode de fonctionnement en haute disponibilité ainsi que de la gestion de diverses situations d’exception
  • Ressource utile pour les développeurs intéressés par la gestion du stockage dans Kubernetes
  • Parmi les autres projets offrant des fonctionnalités similaires, on peut citer OpenEBS et Rook

1 commentaires

 
GN⁺ 2024-08-07
Commentaires sur Hacker News
  • Le logiciel de la navette spatiale est extrêmement stable et comporte très peu de bugs

    • Les trois versions les plus récentes n’avaient chacune qu’une seule erreur sur 420 000 lignes
    • Le nombre d’erreurs est très faible par rapport aux programmes commerciaux
  • Le code est assez classique et, écrit en Go, il est un peu verbeux

    • Cela vient peut-être d’une grande expérience dans le logiciel d’entreprise, qui fait ressentir la différence avec le logiciel système
    • Pour les contributeurs du projet k8s, il peut y avoir beaucoup de commentaires inutiles
  • La base de code de la nouvelle entreprise est bien organisée, ce qui la rend agréable à explorer

    • Il y a beaucoup de commentaires et le code est bien structuré
    • L’équipe est petite, donc la qualité du code est élevée
  • Le bilan de sécurité de la navette spatiale n’est pas bon, c’est pourquoi elle n’est plus en service aujourd’hui

    • On peut se demander si, dans 10 ans, les gens garderont encore un souvenir positif de la navette spatiale
  • L’utilisation du pattern matching structurel pourrait simplifier les blocs if/else

    • Il existe des outils capables de vérifier à la compilation si la correspondance est exhaustive
  • Le code n’est pas mauvais et suit une règle unique

    • C’est bien mieux qu’un code mêlant des styles variés
  • Lien fourni vers une discussion de 2018

  • Écrire des pilotes CSI Kubernetes était agréable

    • Les pilotes CSI EFS ou EBS d’Amazon sont de bons exemples de petites bases de code
    • Le pilote lui-même est simple, mais il contient une logique complexe
  • Le fait d’avoir un else pour chaque instruction if est considéré comme une pratique de sécurité

    • Un module de 2 000 lignes et une méthode de 200 lignes sont nuisibles
    • Les commentaires qui expliquent ce que fait le code ne sont pas utiles
  • Explication de la manière de créer un lien vers une plage de lignes précise dans un fichier GitHub