Kubernetes 使用 Freenas 作为后端的外部存储供给器教程

Kubernetes 使用 Freenas 作为后端的外部存储供给器教程

freenas-provisioner Kubernetes external provisioner using Freenas as backend freenas-provisioner 项目地址: https://gitcode.com/gh_mirrors/fr/freenas-provisioner

项目介绍

Freenas-Provisioner 是一个专为 Kubernetes 设计的外部存储供给器,它能够自动响应 Kubernetes 集群中的 PersistentVolumeClaim(PVC)请求。当在集群中创建一个新的 PVC 时,该供给器会通过调用配置好的 Freenas API 创建相应的数据集(dataset)和 NFS 共享,使之能够被 PVC 使用。当 PVC 或者与其关联的持久卷被删除时,Freenas-Provisioner 自动清理对应的 Freenas 上的数据集和共享,实现资源的生命周期管理。

项目快速启动

步骤一:准备环境

确保你有一个运行着 Kubernetes 的环境,并且已经安装了kubectl命令行工具。

步骤二:部署 Freenas-Provisioner

首先,从 GitHub 下载部署文件:

git clone https://github.com/nmaupu/freenas-provisioner.git
cd freenas-provisioner/deploy

接下来,你需要创建一个秘钥(Secret),包含你的Freenas服务器的认证信息和主机地址。假设你已经准备好了这些信息,并进行了Base64编码(以usernamepassword为例):

编辑 secret.yaml 文件,填入相应的密钥值:

apiVersion: v1
kind: Secret
metadata:
  name: freenas-nfs-secret
type: Opaque
data:
  username: YWRtaW4=   # Base64 encoded 'admin'
  password: Mypassword==  # 这里应该是正确的Base64编码密码
  hostname: aW5zdGFuY2Uucm9vdA==   # Base64 encoded 'instance.root'

然后应用这个Secret到你的Kubernetes集群:

kubectl apply -f secret.yaml

紧接着部署Provisioner自身:

kubectl apply -f rbac.yaml
kubectl apply -f deployment.yaml

步骤三:创建StorageClass

创建一个指向刚刚设置的Secret的StorageClass:

kubectl apply -f class.yaml

应用案例和最佳实践

示例:创建并使用存储卷

创建一个PersistentVolumeClaim来申请存储:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: freenas-test-pvc
spec:
  storageClassName: freenas-nfs
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 1Mi

将此PVC应用于测试Pod:

apiVersion: v1
kind: Pod
metadata:
  name: freenas-test-pod
spec:
  containers:
    - name: freenas-test-pod
      image: gcr.io/google_containers/busybox:1.24
      command: ["/bin/sh"]
      args: ["-c", "date >> /mnt/file.log && exit 0 || exit 1"]
      volumeMounts:
        - name: freenas-test-volume
          mountPath: "/mnt"
  restartPolicy: Never
  volumes:
    - name: freenas-test-volume
      persistentVolumeClaim:
        claimName: freenas-test-pvc

执行以下命令创建Pod并观察Freenas上的变化以及Pod的日志来确认是否成功挂载存储:

kubectl apply -f test-pod.yaml

典型生态项目

对于更高级的场景或特性,如ISCSI支持,可以参考另一个项目travisghansen/freenas-iscsi-provisioner,它提供了对ISCSI协议的支持,包括快照、容量调整等功能。这扩展了与Freenas交互的能力,适合需要块存储的应用场景。


以上步骤提供了一个基本框架,实际部署时可能还需要根据具体环境进行调整。记得始终查看最新的官方文档或项目仓库以获取最新指导。

freenas-provisioner Kubernetes external provisioner using Freenas as backend freenas-provisioner 项目地址: https://gitcode.com/gh_mirrors/fr/freenas-provisioner

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

邱廷彭Maria

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值