GKE上のNFSに外部からアクセスする
GKEで動かしているNFSポッドに外部からアクセスする方法を調べる。 外部ロードバランサーとやらを使えばよさそう。
NFSをこうやって設定しているとする:
code:plume-data.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: plume-data-nfs
spec:
replicas: 1
selector:
matchLabels:
role: plume-nfs-server
template:
metadata:
labels:
role: plume-nfs-server
spec:
containers:
- name: plume-data-nfs
image: gcr.io/google_containers/volume-nfs:0.8
ports:
- name: nfs
containerPort: 2049
- name: mountd
containerPort: 20048
- name: rpcbind
containerPort: 111
securityContext:
privileged: true
volumeMounts:
- mountPath: /exports
name: plume-data-pd
volumes:
- name: plume-data-pd
gcePersistentDisk:
pdName: plume-data
fsType: ext4
---
apiVersion: v1
kind: Service
metadata:
name: plume-data
spec:
ports:
- name: nfs
port: 2049
- name: mountd
port: 20048
- name: rpcbind
port: 111
selector:
role: plume-nfs-server
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: plume-data
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteMany
nfs:
server: plume-data.default.svc.cluster.local
path: /
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: plume-data
spec:
accessModes:
- ReadWriteMany
storageClassName: ""
resources:
requests:
storage: 1Gi
NFSで公開しているポート
2049、20048、111番ポートを公開しているから、ここへロードバランサー経由でアクセスできるようにしたらいいと思うのだけど、そもそもこれらって何なの? なんかTCPだけじゃなくてUDPを開けないといけないのもあったような・・・。
ありがとうRed Hat。
NFS バージョン 4 (NFSv4)はファイアウォールやインターネットを介して動作し、rpcbind サービスが不要になり、
111番ポートはいらなさそうだな。
NFS の全バージョンで、IP ネットワーク経由で実行する Transmission Control Protocol (TCP) を使用することができ、NFSv4 の場合は TCP が必須になります。
TCPだけ開ければよさそう。
code:shell
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
100005 3 udp 20048 mountd
100005 3 tcp 20048 mountd
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100227 3 tcp 2049 nfs_acl
100003 3 udp 2049 nfs
100227 3 udp 2049 nfs_acl
100021 1 udp 60624 nlockmgr
100021 3 udp 60624 nlockmgr
100021 4 udp 60624 nlockmgr
100021 1 tcp 42713 nlockmgr
100021 3 tcp 42713 nlockmgr
100021 4 tcp 42713 nlockmgr
100024 1 udp 55222 status
100024 1 tcp 59897 status
と思ったけど移行したいのが1GiB程度なのでローカルマシン経由で落としてもいいか。。。