使用前提:

  • K8S集群中正确部署了virtual-kubelet(serverless Kubernetes 默认集成)
  • 可用的NFS挂载点(默认可挂载目录为 /,若要指定挂载目录必须提前在nfs创建目录。)

ECI原生支持NFS,可以像使用原生K8S一样使用NFS,将以下文件保存为nfs.yaml:

apiVersion: v1
kind: Pod
metadata:
  name: test-nfs
spec:
  # ACK场景下可以通过nodeName指定调度到ECI
  # nodeName: virtual-node-eci-0
  containers:
  - image: nginx:latest
    name: test-container
    volumeMounts:
    - mountPath: /cache-test
      name: cache-volume
  volumes:
  - name: cache-volume
    nfs:
      server: 133aa489f0-rvn26.cn-beijing.nas.aliyuncs.com
      path: /  
      readOnly: false

使用kubectl创建:

# kubectl create -f nfs.yaml
pod/test-nfs created
# kubectl get pod test-nfs
NAME       READY   STATUS    RESTARTS   AGE
test-nfs   1/1     Running   0          50s
# kubectl exec -it test-nfs bash
root@default-test-nfs:/# ls
bin  boot  cache-test  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@default-test-nfs:/# mkdir cache-test/subpath
root@default-test-nfs:/# echo hello > cache-test/subpath/test
root@default-test-nfs:/# cat cache-test/subpath/test
hello

另外,NFS还支持subpath,将以下yaml文件保存为nfs_subpath.yaml:

apiVersion: v1
kind: Pod
metadata:
  name: test-nfs-subpath
spec:
  # ACK场景下可以通过nodeName指定调度到ECI
  # nodeName: virtual-node-eci-0
  containers:
  - image: nginx:latest
    name: test-container
    volumeMounts:
    - mountPath: /cache-test
      name: cache-volume
      subPath: subpath
  volumes:
  - name: cache-volume
    nfs:
      server: 1a93e496ef-fuu9.cn-beijing.nas.aliyuncs.com
      path: /
      readOnly: false

kubectl创建,效果如下:

# kubectl create -f nfs_subpath.yaml
pod/test-nfs-subpath created
# kubectl get pod test-nfs-subpath
NAME               READY   STATUS    RESTARTS   AGE
test-nfs-subpath   1/1     Running   0          2m26s
# kubectl exec -it test-nfs-subpath bash
root@test-nfs-subpath:/# ls
bin  boot  cache-test  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@test-nfs-subpath:/# ls cache-test/
test
root@test-nfs-subpath:/# cat cache-test/test
hello