1
votes

Stockage Kubernetes hébergé en privé?

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


0 commentaires

3 Réponses :


2
votes

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"]


5 commentaires

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?



0
votes

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


1 commentaires

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.



0
votes

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


0 commentaires