【问题标题】:Persistent Storage - Pi K8s Cluster - NFS version transport protocol not supported持久存储 - Pi K8s 集群 - 不支持 NFS 版本传输协议
【发布时间】:2021-10-07 19:29:53
【问题描述】:

我有一个由 1-Master 20-Nodes 组成的 Raspberry Pi 集群:

  • 192.168.0.92(主)
  • 192.168.0.112(带 USB 驱动器的节点)

我将 USB 驱动器安装到 /media/hdd 并为其设置标签 - purpose=volume

使用以下我能够设置 NFS 服务器:

apiVersion: v1
kind: Namespace
metadata:
  name: storage
  labels:
    app: storage
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: local-pv
  namespace: storage
spec:
  capacity:
    storage: 3.5Ti
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: local-storage
  local:
    path: /media/hdd
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: purpose
          operator: In
          values:
          - volume
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: local-claim
  namespace: storage
spec:
  accessModes:
  - ReadWriteOnce
  storageClassName: local-storage
  resources:
    requests:
      storage: 3Ti
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nfs-server
  namespace: storage
  labels:
    app: nfs-server
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nfs-server
  template:
    metadata:
      labels:
        app: nfs-server
        name: nfs-server
    spec:
      containers:
      - name: nfs-server
        image: itsthenetwork/nfs-server-alpine:11-arm
        env:
          - name: SHARED_DIRECTORY
            value: /exports
        ports:
          - name: nfs
            containerPort: 2049
          - name: mountd
            containerPort: 20048
          - name: rpcbind
            containerPort: 111
        securityContext:
          privileged: true
        volumeMounts:
          - mountPath: /exports
            name: mypvc
      volumes:
        - name: mypvc
          persistentVolumeClaim:
            claimName: local-claim
      nodeSelector:
        purpose: volume
---
kind: Service
apiVersion: v1
metadata:
  name: nfs-server
  namespace: storage
spec:
  ports:
    - name: nfs
      port: 2049
    - name: mountd
      port: 20048
    - name: rpcbind
      port: 111
  clusterIP: 10.96.0.11
  selector:
    app: nfs-server

我什至可以用这个制作一个持久的卷:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: mysql-nfs-volume
  labels:
    directory: mysql
spec:
  capacity:
    storage: 200Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: slow
  nfs:
    path: /mysql
    server: 10.244.19.5
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-nfs-claim
spec:
  storageClassName: slow
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 100Gi
  selector:
    matchLabels:
      directory: mysql

但是当我尝试像这样使用音量时:

apiVersion: v1
kind: Service
metadata:
  name: wordpress-mysql
  labels:
    app: wordpress
spec:
  ports:
    - port: 3306
  selector:
    app: wordpress
    tier: mysql
  clusterIP: None
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: wordpress-mysql
  labels:
    app: wordpress
spec:
  selector:
    matchLabels:
      app: wordpress
      tier: mysql
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: wordpress
        tier: mysql
    spec:
      containers:
      - image: mysql:5.6
        name: mysql
        env:
        - name: MYSQL_ROOT_PASSWORD
          valueFrom:
            secretKeyRef:
              name: mysql-pass
              key: password
        ports:
        - containerPort: 3306
          name: mysql
        volumeMounts:
        - name: mysql-persistent-storage
          mountPath: /var/lib/mysql
      volumes:
      - name: mysql-persistent-storage
        persistentVolumeClaim:
          claimName: mysql-nfs-claim

我收到 NFS 版本传输协议不支持错误。

【问题讨论】:

  • 您使用的是哪个版本的 Kubernetes?请提供您的日志。你看到this article了吗?请让我知道这些解决方案是否适合您。
  • 这实际上很有帮助。您应该将文章的 3 个步骤作为答案,以便我接受。

标签: kubernetes raspberry-pi persistent-volumes persistent-volume-claims


【解决方案1】:

看到mount.nfs: requested NFS version or transport protocol is not supported错误主要有以下三个原因:

  1. NFS 服务未在 NFS 服务器上运行
  2. 客户端上未安装 NFS 实用程序
  3. NFS 服务挂在 NFS 服务器上

根据this artice,有三种解决方案可以解决您的错误问题。

第一个:

登录 NFS 服务器并检查 NFS 服务状态。如果以下命令 service nfs status 返回 NFS 服务在服务器上停止的信息 - 只需使用 service nfs start 启动它们。要在客户端上挂载 NFS 共享,请使用相同的命令。

第二个:

如果在尝试第一个解决方案后您的问题仍未解决

在您的服务器上尝试installing package nfs-utils。

第三个:

打开文件/etc/sysconfig/nfs 并尝试检查以下参数

# Turn off v4 protocol support
#RPCNFSDARGS="-N 4"
# Turn off v2 and v3 protocol support
#RPCNFSDARGS="-N 2 -N 3"

RPCNFSDARGS 行中删除哈希将关闭特定版本的支持。这样,具有上述 NFS 版本的客户端将无法连接到 NFS 服务器以安装共享。如果您启用了其中任何一项,请尝试禁用它并在 NFS 服务器服务重新启动后在客户端挂载。

【讨论】:

    猜你喜欢
    • 2017-01-13
    • 1970-01-01
    • 1970-01-01
    • 2021-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-01
    相关资源
    最近更新 更多