macos 启用 nfs-server
|
|
为了能让 k8s 使用 nfs-server。需要再操作一下
在/etc/nfs.conf中
```
nfs.server.mount.require_resv_port = 0
```
服务启动命令
|
|
检查配置是否生效
|
|
为了更好的使用,可以进行本地测试
|
|
挂载成功之后,尝试在 client 目录添加文件
| 1 | touch /Users/huangxiaofeng/nas_a2/hello |
查看 server 目录是否有文件同步
| 1 2 | ls /Users/huangxiaofeng/nas_a hello |
这个时候会发现 nas_a 目录下,自动多了一个hello的文件
取消挂在,可以在finder中直接弹出挂载,或者使用如下命令即可。
| 1 | umount /Users/huangxiaofeng/nas_a2 |
k8s 中测试 nfs
NFS PersistentVolume
前面我们已经在 mac 上启动了一个 NFS 服务,现在通过在 k8s 上创建一个 PersistentVolume 来使用 NFS。
创建一个 PV,编辑配置文件nfs-pv-1.yaml,内容如下:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | ➜ ~ cat nfs-pv-1.yaml apiVersion: v1 kind: PersistentVolume metadata: name: nfspv1 spec: mountOptions: - nfsvers=3 - nolock capacity: storage: 2Gi accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Recycle storageClassName: nfs nfs: path: /Users/caiwenhui/nas_a server: docker.for.mac.host.internal |
nfs 相关的配置:
- nfsvers=3 使用 v3 协议
- 路径就是 nfs 上的目录
- 注意这里,我们的服务器 ip,如果不能明确的目前现在的网络通信情况的下,请使用
docker.for.mac.host.internal
申请资源 PV。
| 1 | kubectl apply -f nfs-pv-1.yaml |
查看资源状态。
| 1 2 3 | ➜ ~ kubectl get pv NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE nfspv1 2Gi RWO Recycle Available nfs 13h |
STATUS 为Available表示 nfspv1 就绪,可以被 PVC 申请。
PersistentVolumeClaim
下面创建 PVC,编辑 nfs-pvc-1.yaml 文件
| 1 2 3 4 5 6 7 8 9 10 11 12 | ➜ ~ cat nfs-pvc-1.yaml apiVersion: v1 kind: PersistentVolumeClaim metadata: name: nfspvc1 spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi storageClassName: nfs |
申请资源 PVC。
| 1 | kubectl apply -f nfs-pvc-1.yaml |
查看 pvc 状态/查看 pv 状态。
| 1 2 3 4 5 6 7 | ➜ ~ kubectl get pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE nfspvc1 Bound nfspv1 10Gi RWO nfs 85s ➜ ~ kubectl get pv NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE nfspv1 2Gi RWO Recycle Bound default/nfspvc1 nfs 13h |
这里,我们可以看到 status = bound,代表此时pv和pvc已经绑定在一起了。这样子我们就可以把pod和pvc绑定。
cat « EOF | kubectl apply -f - apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: nfs-csi provisioner: nfs.csi.k8s.io parameters: server: 192.168.2.3 # 这里填 NFS Server 地址 share: /Users/huangxiaofeng/nas_a csi.storage.k8s.io/provisioner-secret-name: “mount-options” csi.storage.k8s.io/provisioner-secret-namespace: “kube-system” reclaimPolicy: Delete volumeBindingMode: Immediate mountOptions:
- nfsvers=3
- hard EOF
|
|