私有托管的Kubernetes存储?

时间:2019-04-15 00:13:05

标签: kubernetes storage

我正在寻找Kubernetes存储的解决方案,可以在其中使用UnRaid服务器作为Kubernetes集群的存储。有人做过这样的事吗?

任何帮助将不胜感激。

谢谢, 杰米

3 个答案:

答案 0 :(得分:2)

唯一的方法可能是使用NFS Volume。该link为您提供了有关如何挂载Unraid NFS共享的想法。

然后,您可以按照Kubernetes example了解如何在Pod中使用NFS卷。

基本上,您的Unraid服务器将具有IP地址,然后您可以使用该IP地址在Pod上安装卷/路径。 For example

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

如果愿意,您也可以使用PVCFor example

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

然后在您的Deployment或Pod定义中使用它:

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

答案 1 :(得分:0)

您可以使用ceph。我使用它,它对我有很大帮助。您可以从存储中构建集群并定义复制。 您可以通过ceph使用增量备份和快照

答案 2 :(得分:0)

您可以尝试Kadalu(https://kadalu.io)项目。

Kadalu容器存储是为Kubernetes中运行的应用程序提供持久存储的解决方案。该项目使用GlusterFS提供k8s存储,但与Kubernetes本机集成。

安装Kadalu Operator,然后注册存储设备。例如,以下命令从节点<Spinner android:id="@+id/S24" android:textColor="@color/text_matrix_cell" android:layout_width="40dp" android:layout_height="wrap_content" android:entries="@array/A24" /> (属于k8s集群的一部分)公开存储设备/dev/vdc。运营商将部署CSI驱动程序,这是持久卷声明(PVC)所必需的。

安装Kadalu Operator

kube-node1.example.com

注册存储设备

[kube-master]# kubectl create -f https://kadalu.io/operator-latest.yaml

验证所有必需的Pod是否正在运行

[kube-master]# kubectl kadalu storage-add storage-pool-1 \
    --device kube-node1.example.com:/dev/vdc

就这样。开始申请PV!

示例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

运行以下命令以请求样本pv

# File: sample-pvc.yaml
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: sample-pv
spec:
  storageClassName: kadalu.replica1
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 500M

注意:Kadalu还支持Replica3配置,这意味着需要注册三个设备。副本3为应用程序提供了高可用性,即使三分之二的存储节点发生故障。例如,

[kube-master]# kubectl create -f sample-pvc.yaml

希望这很有用。随时在https://github.com/kadalu/kadalu/issues

处打开问题或请求功能