我正在寻找Kubernetes存储的解决方案,其中我可以使用我的UnRaid服务器作为Kubernetes集群的存储。有没有人做过这样的事?
任何帮助都将不胜感激。
谢谢,杰米
发布于 2020-01-02 21:38:07
您可以尝试Kadalu(https://kadalu.io)项目。
Kadalu容器存储是为Kubernetes中运行的应用程序提供持久存储的解决方案。该项目使用GlusterFS提供k8s存储,但与Kubernetes进行了本机集成。
安装Kadalu Operator,然后注册存储设备。例如,以下命令从节点kube-node1.example.com(属于k8s群集)公开存储设备/dev/vdc。操作员部署CSI驱动程序,这是为持久卷声明(PVC)提供服务所必需的。
安装Kadalu Operator
[kube-master]# kubectl create -f https://kadalu.io/operator-latest.yaml注册存储设备
[kube-master]# kubectl kadalu storage-add storage-pool-1 \
--device kube-node1.example.com:/dev/vdc验证所有必需的pods是否都在运行
[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!
示例PV索赔。
# File: sample-pvc.yaml
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: sample-pv
spec:
storageClassName: kadalu.replica1
accessModes:
- ReadWriteMany
resources:
requests:
storage: 500M运行以下命令以请求sample-pv
[kube-master]# kubectl create -f sample-pvc.yaml注意: Kadalu还支持Replica3配置,即需要注册三台设备。即使每三个存储节点中就有一个发生故障,副本3也能为应用程序提供高可用性。例如,
[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希望这是有用的。请随时在此处打开问题或功能请求https://github.com/kadalu/kadalu/issues
发布于 2019-04-15 12:10:48
可能唯一的方法是在NFS Volume中使用它。此link向您介绍如何挂载Unraid NFS共享。
然后,您可以按照Kubernetes example中的说明在Pod中使用NFS卷。
基本上,您的Unraid服务器将有一个IP地址,然后您可以在Pod上使用该IP地址挂载卷/路径。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"]如果你愿意,你也可以使用PVC。For 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然后在您的部署或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发布于 2019-04-15 13:17:14
你可以使用ceph .I使用它,它对我有很大帮助。您可以从您的存储构建集群并定义复制。ceph可以使用增量备份和快照
https://stackoverflow.com/questions/55681165
复制相似问题