K8S 使用阿里云 NAS 配额问题

注意

默认情况下,阿里云的 NAS 不限制配额,使用 StorageClass + PVC 或 PV + PVC 进行测试都无法对容量进行限制。

官方说明

目录配额
https://help.aliyun.com/document_detail/144827.htm?spm=a2c4g.11186623.0.0.6ad06d870jsjxy#task-2333199

配置NAS NFS存储卷容量
https://help.aliyun.com/document_detail/477385.htm?spm=a2c4g.11186623.0.0.2f166d0cwvbdrt#task-2287334

测试

在 NAS 中新建目录配额

创建 StorageClass, subpath 要对应上面创建的配额目录,要开启 volumeCapacity 和 allowVolumeExpansion 功能

cat sc.yaml 
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: alicloud-nas-test
mountOptions:
- nolock,tcp,noresvport
- vers=3
parameters:
  volumeAs: subpath
  server: "214ce4b610-quv89.cn-shenzhen.nas.aliyuncs.com:/default/test/"
  volumeCapacity: "true" # 创建动态卷带有配额能力。
provisioner: nasplugin.csi.alibabacloud.com
reclaimPolicy: Delete
allowVolumeExpansion: true # 开启允许动态卷扩容能力。

cat pvc.yaml 
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: test-pvc
  namespace: default
  annotations:
    volume.beta.kubernetes.io/storage-class: "alicloud-nas-test"
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 1Gi

cat deployment.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    name: test
  name: test
spec:
  replicas: 1
  selector:
    matchLabels:
      app: test
  template:
    metadata:
      labels:
        app: test
    spec:
      terminationGracePeriodSeconds: 60
      containers:
      - name: test
        image: nginx
        imagePullPolicy: IfNotPresent
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
          limits:
            cpu: 2000m
            memory: 4096Mi
        volumeMounts: 
        - name: data
          mountPath: /mnt
      volumes: 
      - name: data 
        persistentVolumeClaim:
          claimName: test-pvc

kubectl apply -f sc.yaml -f pvc.yaml -f deployment.yaml  

# 进入容器测试
kubectl exec -it test-76b9946bf-vkvn4 -- /bin/bash
cd /mnt
dd if=/dev/zero of=1G.txt bs=1M count=1024


成功限制住

扩容

在目录配额修改容量限制

# 修改 pvc
cat pvc.yaml 
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: test-pvc
  namespace: default
  annotations:
    volume.beta.kubernetes.io/storage-class: "alicloud-nas-test"
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 2Gi

kubectl apply -f pvc.yaml

# 注意 pvc 的生效有延迟,一般5分钟
# 进入 容器测试
kubectl exec -it test-76b9946bf-vkvn4 -- /bin/bash
cd /mnt
dd if=/dev/zero of=10M.txt bs=1M count=10
dd if=/dev/zero of=100M.txt bs=1M count=100

总结

阿里云 NAS 限制容量目前体验比较差,很多时候会延迟 5~15 分钟(官方说法,测试上也有分钟级别的延迟)
配置比较麻烦,需要通过 目录配额 + StorageClass + PVC 的方式使用,暂时不推荐。

posted @ 2023-03-22 15:57  klvchen  阅读(225)  评论(0)    收藏  举报