阿里云 K8S 通过 pv 和 pvc 静态挂载已有的 NAS 目录


一、创建和获取阿里云的挂载点,不了解的可以看阿里云帮助文档

https://help.aliyun.com/document_detail/134923.html?spm=a2c4g.11186623.6.793.6264714bLwZMoQ

例如,我这里获得的挂载点为:88888888-ney35.cn-shenzhen.nas.aliyuncs.com

二、创建目录,把文件上传到上面去

找台机器把目录挂载上去,上传需要容器需要使用的文件

yum install -y nfs-utils

mount -t nfs -o vers=3,nolock,proto=tcp,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport 88888888-ney35.cn-shenzhen.nas.aliyuncs.com:/ /mnt

# 创建对应的目录, 注意创建的目录要与 PV 的路径一样
cd /mnt
mkdir gc-wms2
cd gc-wms2
mkdir dir1 dir2
touch dir1/hello.txt
touch dir2/world.txt

 tree ./
./
├── dir1
│   └── hello.txt
└── dir2
    └── world.txt

# umount 
cd ~ && umount /mnt

三、创建 PV 和 PVC

cat gc_wms_nas2.yaml 

apiVersion: v1
kind: PersistentVolume
metadata:
  name: gc-wms-pv-nas
  namespace: devops
  labels:
    alicloud-pvname: gc-wms-pv-nas
spec:
  capacity:
    storage: 10Mi
  accessModes:
    - ReadWriteMany
  csi:
    driver: nasplugin.csi.alibabacloud.com
    volumeHandle: gc-wms-pv-nas
    volumeAttributes:
      server: "88888888-ney35.cn-shenzhen.nas.aliyuncs.com"  # 指定挂载点
      path: "/gc-wms2"           # 与第二部分在 nas 创建的目录一致
  mountOptions:
  - nolock,tcp,noresvport
  - vers=3

---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: gc-wms-pvc-nas
  namespace: devops
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 10Mi
  selector:
    matchLabels:
      alicloud-pvname: gc-wms-pv-nas

# 创建
kubectl apply -f gc_wms_nas2.yaml 

四、创建应用

cat test.yaml 

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-nas
  namespace: devops
  labels:
    app: klvchen-nginx
spec:
  selector:
    matchLabels:
      app: klvchen-nginx
  template:
    metadata:
      labels:
        app: klvchen-nginx
    spec:
      containers:
      - name: klvchen-nginx
        image: nginx:1.7.9
        ports:
        - containerPort: 80
        volumeMounts:
          - name: pv-nas
            mountPath: "/data1"
            subPath: "dir1"             # 指定挂载 nas 中 /gc-wms2/dir1 文件夹 
          - name: pv-nas
            mountPath: "/data2"
            subPath: "dir2"             # 指定挂载 nas 中 /gc-wms2/dir2 文件夹
      volumes:
        - name: pv-nas
          persistentVolumeClaim:
            claimName: gc-wms-pvc-nas   # 指定上面 PVC 的名字

# 启动
kubectl apply -f test.yaml

五、测试

kubectl get pods -n devops
NAME                              READY   STATUS    RESTARTS   AGE
nginx-nas-69f5fd8f78-phfs4        1/1     Running   0          7s

kubectl -n devops exec -it nginx-nas-69f5fd8f78-phfs4 /bin/bash

# 测试成功
root@nginx-nas-69f5fd8f78-phfs4:/# cd data1/
root@nginx-nas-69f5fd8f78-phfs4:/data1# ls
hello.txt
root@nginx-nas-69f5fd8f78-phfs4:/data1# cd ..
root@nginx-nas-69f5fd8f78-phfs4:/# cd data2/
root@nginx-nas-69f5fd8f78-phfs4:/data2# ls  
world.txt


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM