Comment partager de stockage entre Kubernetes gousses?
Je suis l'évaluation de Kubernetes comme une plate-forme pour notre nouvelle application. Pour l'instant, il semble très excitant! Cependant, je suis confronté à un problème: je suis l'hébergement de mon cluster sur la CME et j'ai besoin d'un mécanisme pour le partage de stockage entre les deux gousses de - l'intégration continue serveur et mon serveur d'application. Quel est le meilleur moyen pour cela, avec kubernetes? Aucun des types de volume semble correspondre à mes besoins, depuis la CME disques ne peuvent pas être partagés si un pod besoin d'écrire sur le disque. NFS, ce serait parfait, mais semble nécessitent des options de compilation pour le kubernetes cluster?
EDIT: le Partage de stockage semble être un problème que j'ai rencontré plusieurs fois à l'aide de Kubernetes. Il y a plusieurs cas d'utilisation où j'aimerais juste avoir un volume et de le raccorder à plusieurs gousses (avec accès en écriture). Je ne peux que supposer que ce cas d'utilisation, non?
EDIT2: Par exemple, cette page décrit comment configurer un cluster Elasticsearch, mais il câblage avec le stockage persistant est impossible (comme décrit ici), qui rend inutile 🙁
- Que feriez-vous de l'écriture sur le disque? Les journaux?
- Cette demande spécifiquement au sujet de la CME, mais venant de google, je m'attendais à une réponse générale. Voici ce que finalement répondu à la question dans le titre: stackoverflow.com/questions/37649541/... Qui est utiliser AssessMode: ReadWriteMany
Vous devez vous connecter pour publier un commentaire.
Un peu en retard pour répondre à cette question, mais de mon expérience à ce jour de Kubernetes /MSA, ici, le problème est plus dans votre modèle de conception. L'un des principaux patrons de conception qui continue de venir assez souvent dans le MSA est la bonne encapsulation de vos services, qui comprend également ses données.
Votre service doivent ressembler après les données relatives à son domaine de préoccupation et, à l'instar de la programmation orientée objet, doit permettre l'accès à ces données à d'autres services par l'intermédiaire d'une interface (API, PUBSUB message, etc). Multi-service d'accès aux données est un anti-modèle semblable à des variables globales dans la programmation orientée objet.
Je suppose que Google ont le même avis que bien, et c'est pourquoi Kubernetes est configuré dans ce mode.
Comme un exemple, si vous étiez à la recherche d'écrire des journaux, vous devriez avoir un service de journal qui, chaque service peut appeler les données pertinentes, il doit se connecter. L'écriture directe sur un disque partagé signifie que vous aurez besoin de mettre à jour chaque conteneur si vous changez de répertoire des journaux de structure, etc ou a décidé d'ajouter des fonctionnalités supplémentaires comme des emails sur les erreurs.
NFS est un construit-dans le volume plugin et prend en charge plusieurs gousse d'écrivains. Il n'y a pas de compilation spéciale des options pour obtenir des NFS de travail dans le Kube.
Je travaille chez Red Hat sur Kubernetes, axé principalement sur le stockage.
Pour le partage du volume entre plusieurs modules que vous auriez besoin de créer un PVC avec mode d'accès ReadWriteMany
Après cela, vous pouvez monter à plusieurs gousses:
Bien sûr, la persistance de volume doit être accessible via le réseau. Sinon, vous devez vous assurer que tous les gousses sont prévues pour le noeud avec ce volume.
Il existe plusieurs types de volume qui sont appropriés et non lié à un fournisseur de services de cloud:
Bien sûr, utiliser un volume que vous avez besoin de l'avoir en premier. C'est, si vous voulez consommer NFS vous avez besoin pour l'installation de NFS sur tous les nœuds K8s cluster. Si vous voulez consommer du Ceph, vous devez configurer un cluster Ceph et ainsi de suite.
Le seul type de volume qui prend en charge Kubernetes de la boîte est Portworks. Il y a des instructions sur la comment l'installer dans GKE.
De configuration du cluster Ceph dans K8s il y a un projet en cours de développement appelé Tour.
Mais tout cela est de trop si vous voulez juste un dossier à partir d'un nœud à être disponible dans un autre nœud. Dans ce cas il suffit de configuration du serveur NFS. Il ne serait pas plus difficile que de fournir d'autres types de volume et consomme beaucoup moins de ressources cpu/mémoire/disque de ressources.
Si c'est les journaux que vous êtes à la recherche d'écrire sur le disque, je vous suggère de regarder à logspout https://github.com/gliderlabs/logspout. Cela permettra de recueillir chaque gousse d'abattage et puis vous pouvez utiliser google cloud de plates-formes assez nouveau service d'enregistrement qui utilise fluentd. De cette façon, tous les journaux de chaque groupe sont rassemblées dans un seul endroit.
Si c'est des données qui permettraient d'écrire normalement à une base de données ou quelque chose du genre, je recommande d'avoir un serveur distinct à l'extérieur de la kubernetes cluster qui exécute la base de données.
MODIFIER
Pour le partage de fichiers entre les cosses, je recommande le montage d'un google cloud disque de stockage pour chaque nœud dans votre kubernetes de cluster, puis mettre en place un volume dans chaque pod qui se monte à ce répertoire monté sur le nœud et non pas directement sur le disque dur. Avoir à monter à chaque nœud est bien parce que les gousses ne pas courir sur les nœuds, il est donc préférable de centraliser dans ce cas.
Mise à jour: Le meilleur choix est probablement le Cloud Filestore, géré NFS système. Cela vous donne le plein de lecture/écriture aléatoire de l'accès aux fichiers, à la différence de GCS, qui ne prend en charge upload/download. Voir les docs ici.
Original:
Avez-vous essayé Google Cloud Storage? Vous pourriez même être en mesure d'utiliser le Le FUSIBLE de l'adaptateur de la carte comme un disque réseau.
Avez-vous regardé kubernetes Les Volumes ? Vous êtes probablement à la recherche à la création d'un gcePersistentDisk
À l'appui de plusieurs écritures à partir de différents modules que vous aurez probablement besoin de créer un costaud pod qui expose une épargne ou les différents types de prise de service qui expose readFromDisk et WriteToDisk méthodes.
Google a récemment publié cloud filestore, avec un tutoriel ici: https://cloud.google.com/filestore/docs/accessing-fileshares
Pourrait être une bonne alternative au stockage dans le cloud/seaux pour certains scénarios.
@Marco - en ce qui concerne le Maven question relative à mon avis serait d'arrêter de regarder cela comme une solution de stockage centralisé problème et peut-être penser que c'est un problème de service.
J'ai exécuter Maven dépôts en vertu de HTTP dans le passé (en lecture seule). Je voudrais simplement créer un repo Maven et l'exposer sur Apache/Nginx dans son propre pod (conteneur docker) avec ce que jamais consacré de stockage dont vous avez besoin pour juste que pod et ensuite utiliser un service de découverte de la relier à votre demande et de construire des systèmes.