Je recherche une solution pour le stockage Kubernetes où je peux utiliser mon serveur UnRaid comme stockage pour mon cluster Kubernetes. Quelqu'un a-t-il fait quelque chose comme ça?
Toute aide serait très appréciée.
Merci, Jamie
3 Réponses :
Le seul moyen est probablement de l'utiliser comme un volume NFS . Ce lien vous donne une idée sur la façon de monter un partage NFS Unraid.
Ensuite, vous pouvez suivre l ' exemple Kubernetes pour savoir comment pour utiliser un volume NFS dans un pod.
En gros, votre serveur Unraid aura une adresse IP et vous pourrez ensuite monter le volume / chemin en utilisant cette adresse IP sur votre pod. Par exemple :
apiVersion: extensions/v1beta1 kind: Deployment metadata: name: nfs-busybox spec: replicas: 1 selector: matchLabels: name: nfs-busybox template: metadata: labels: name: nfs-busybox spec: containers: - image: busybox imagePullPolicy: Always name: busybox volumeMounts: # name must match the volume name below - name: my-pvc-nfs mountPath: "/mnt" volumes: - name: my-pvc-nfs persistentVolumeClaim: claimName: nfs
Vous pouvez également utiliser un PVC si vous le souhaitez. Par exemple :
apiVersion: v1 kind: PersistentVolume metadata: name: nfs spec: capacity: storage: 10Gi accessModes: - ReadWriteMany nfs: server: 10.108.211.244 # Change this! path: "/" --- kind: PersistentVolumeClaim apiVersion: v1 metadata: name: nfs spec: accessModes: - ReadWriteMany storageClassName: "" resources: requests: storage: 10G
Ensuite, utilisez-le dans votre déploiement ou votre définition de pod:
kind: Pod apiVersion: v1 metadata: name: pod-using-nfs spec: # Add the server as an NFS volume for the pod volumes: - name: nfs-volume nfs: # URL for the NFS server server: 10.108.211.244 # Change this! path: / # In this container, we'll mount the NFS volume # and write the date to a file inside it. containers: - name: app image: alpine # Mount the NFS volume in the container volumeMounts: - name: nfs-volume mountPath: /var/nfs # Write to a file inside our NFS command: ["/bin/sh"] args: ["-c", "while true; do date >> /var/nfs/dates.txt; sleep 5; done"]
Je suis assez nouveau sur Kubernetes, dans l'exemple, je ne vois pas comment le stockage NFS est lié à mon serveur UnRaid. Une autre chose est que mon adresse IP UnRaid n'est pas statique et je ne vois pas non plus un moyen d'ajouter des informations d'identification.
Ajout d'autres exemples. Vous devez utiliser l'adresse IP de votre serveur sans peur
Je ne peux pas utiliser d'adresse IP car je n'ai pas d'adresse IP statique.
Vous devrez utiliser votre IP dynamique ou n'importe quelle IP ou vous pouvez utiliser DNS mais NFS se retournera si vous modifiez une entrée DNS
Ok, alors comment ajouter des informations d'identification à cela?
vous pouvez utiliser ceph. Je l'utilise et cela m'aide beaucoup. vous pouvez créer un cluster à partir de votre stockage et définir la réplication. vous pouvez utiliser une sauvegarde incrémentielle et un instantané par ceph
Ce n'est pas une option, j'ai déjà quelque chose de similaire avec StorageOS. Le problème est que mon plus gros nœud a 48 Go de stockage et si j'essaie d'ajouter un volume plus grand que cela, il commence à écraser ou à ne pas écrire du tout (même si la taille du pool est quatre fois plus grande). De plus, ma piscine n'a pas assez de stockage au total pour atteindre ce dont j'ai besoin.
Vous pouvez essayer le projet Kadalu ( https://kadalu.io ).
Le stockage de conteneurs Kadalu est le solution pour fournir un stockage persistant pour les applications exécutées dans Kubernetes. Ce projet utilise GlusterFS pour fournir le stockage k8 mais intégré nativement à Kubernetes.
Installez Kadalu Operator, puis enregistrez le périphérique de stockage. Par exemple, les commandes ci-dessous expose le périphérique de stockage / dev / vdc
à partir du nœud kube-node1.example.com
(qui fait partie du cluster k8s). L'opérateur déploie les pilotes CSI, qui sont nécessaires pour servir les revendications de volume persistant (PVC).
Installer Kadalu Operator
[kube-master]# kubectl kadalu storage-add storage-pool-2 --type Replica3 \ --device kube-node1.example.com:/dev/vdc --device kube-node2.example.com:/dev/vdc --device kube-node3.example.com:/dev/vdc
Enregistrer le périphérique de stockage p>
[kube-master]# kubectl create -f sample-pvc.yaml
Vérifiez que tous les pods requis sont en cours d'exécution
# File: sample-pvc.yaml --- kind: PersistentVolumeClaim apiVersion: v1 metadata: name: sample-pv spec: storageClassName: kadalu.replica1 accessModes: - ReadWriteMany resources: requests: storage: 500M
C'est tout. Commencez à réclamer des PV!
Exemple de réclamation de PV.
[kube-master]# kubectl get pods -nkadalu NAME READY STATUS RESTARTS AGE csi-nodeplugin-5hfms 3/3 Running 0 14m csi-nodeplugin-924cc 3/3 Running 0 14m csi-nodeplugin-cbjl9 3/3 Running 0 14m csi-provisioner-0 4/4 Running 0 14m operator-577f569dc8-l2q6c 1/1 Running 0 15m server-storage-pool-1-0-kube... 2/2 Running 0 11m
Exécutez la commande ci-dessous pour demander sample-pv
[kube-master]# kubectl kadalu storage-add storage-pool-1 \ --device kube-node1.example.com:/dev/vdc