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