我正在寻找Kubernetes存储的解决方案,可以在其中使用UnRaid服务器作为Kubernetes集群的存储。有人做过这样的事吗?
任何帮助将不胜感激。
谢谢, 杰米
答案 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"]
如果愿意,您也可以使用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
然后在您的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
处打开问题或请求功能