NFS 服务器 CRD

可以使用nfsservers.nfs.rook.io自定义资源定义 (CRD)创建和配置 NFS 服务器。有关完整说明,请参阅用户指南演练。此页面将解释 NFS CRD 上的所有可用配置选项。

样本

下面的示例演示了用于配置 NFS CRD 的参数,后面是一个更详细解释参数的表。
下面是一个非常简单的示例,显示了使用 NFS 共享卷(可以是 hostPath、cephFS、cephRBD、googlePD、EBS 等),没有任何客户端或基于导出的配置。
对于具有读/写权限且没有压缩的PersistentVolumeClaimnamed googlePD-claim,NFS CRD 实例将如下所示:
apiVersion: nfs.rook.io/v1alpha1 kind: NFSServer metadata: name: nfs-vol namespace: rook spec: replicas: 1 exports: - name: nfs-share server: accessMode: ReadWrite squash: none persistentVolumeClaim: claimName: googlePD-claim # A key/value list of annotations annotations: # key: value

设置

下表详细说明了 NFS CRD 中可用的每个配置选项。

范围 描述 默认
replicas 要启动的 NFS 守护进程数 1
annotations 要添加的注释的键值对列表。 []
exports 用于创建导出的参数
exports.name 共享卷的名称
exports.server NFS 服务器配置
exports.server.accessMode 共享的卷访问模式(读取和写入)(有效选项为ReadOnly、ReadWrite和none) ReadWrite
exports.server.squash 这防止根用户从具有根特权(有效选项为远程连接none,rootId,root和all) none
exports.server.allowedClients 可以使用 NFS 卷的客户端的访问配置
exports.server.allowedClients.name 主机名
exports.server.allowedClients.clients 共享导出的主机或网络。此字段的有效条目是主机名、IP 地址、网络组和 CIDR 网络地址。
exports.server.allowedClients.accessMode 客户端的读写权限*(有效选项与 相同exports.server.accessMode) ReadWrite
exports.server.allowedClients.squash 客户端的 Squash 选项*(有效选项与 相同exports.server.squash) none
exports.persistentVolumeClaim 将作为 NFS 服务器导出的后备卷的 PVC。允许任何 PVC,例如主机路径、CephFS、Ceph RBD、Google PD、Amazon EBS 等。
exports.persistentVolumeClaim.claimName PVC名称

*注意:如果exports.server.allowedClients.accessMode和exports.server.allowedClients.squash选项被指定,exports.server.accessMode并exports.server.squash分别被覆盖。
volumes.allowedClients.squash有效选项的说明是:

选项 描述
none 不执行用户 id 压缩
rootId UID0和 GID0被压缩为匿名 uid 和匿名 GID。
root 0任何值的UID和 GID 都被压缩为匿名 uid 和匿名 GID。
all 所有用户都被压扁

需要通过 NFS 导出的卷必须通过 PVC 附加到 NFS 服务器 pod。可以附加的卷示例包括主机路径、AWS 弹性块存储、GCE 永久磁盘、CephFS、RBD 等。这些卷的限制在它们由 NFS 共享时也适用。可以在此处找到有关这些卷的限制和其他详细信息。

例子

本节包含一些有关更高级方案和配置选项的示例。

导出单个卷供多个客户端访问

此示例显示如何为访问共享的不同客户端共享具有不同选项的卷。EBS 卷(由 PVC 表示)将由 NFS 服务器导出以供客户端访问/nfs-share(请注意,此 PVC 必须已存在)。
允许以下客户端组访问此共享:

  • group1IP 地址172.17.0.5将被授予只读访问权限,root 用户被压缩。
  • group2包括 的网络范围172.17.0.5/16和名为 的主机serverX。他们都将被授予读/写权限,没有用户挤压。

apiVersion: nfs.rook.io/v1alpha1 kind: NFSServer metadata: name: nfs-vol namespace: rook spec: replicas: 1 exports: - name: nfs-share server: allowedClients: - name: group1 clients: 172.17.0.5 accessMode: ReadOnly squash: root - name: group2 clients: - 172.17.0.0/16 - serverX accessMode: ReadWrite squash: none persistentVolumeClaim: claimName: ebs-claim

多卷

本节提供了如何从一个 NFS 服务器共享多个卷的示例。这些卷都可以是不同的类型(例如,Google PD 和 Ceph RBD)。下面我们将共享一个 Amazon EBS 卷和一个 CephFS 卷,对两者使用不同的配置:

  • EBS 卷已命名share1,可供所有具有只读访问权限且无压缩的客户端使用。
  • CephFS 卷已命名share2,可供所有具有读/写访问权限且无压缩的客户端使用。

apiVersion: nfs.rook.io/v1alpha1 kind: NFSServer metadata: name: nfs-multi-vol namespace: rook spec: replicas: 1 exports: - name: share1 server: allowedClients: - name: ebs-host clients: all accessMode: ReadOnly squash: none persistentVolumeClaim: claimName: ebs-claim - name: share2 server: allowedClients: - name: ceph-host clients: all accessMode: ReadWrite squash: none persistentVolumeClaim: claimName: cephfs-claim