Getting: bad option; for several filesystems (e.g. nfs, cifs) when trying to mount azure file share in K8 container

I created a Azure file share and I am able to connect to it using map network drive in my laptop having windows 10. I created a hello-world spring boot application with volume mount configurations for azure file share and trying to deploy in Kubernetes in docker-desktop. But my pod doesn't starts -

hello-world-9d7479c4d-26mv2 0/1 ContainerCreating 0 15s 

Here is the error I can see in events when I describe the POD -

Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 9h Successfully assigned default/hello-world-9d7479c4d-26mv2 to docker-desktop Warning FailedMount 9h (x7 over 9h) kubelet, docker-desktop MountVolume.SetUp failed for volume "fileshare-pv" : mount failed: exit status 32 Mounting command: mount Mounting arguments: -t cifs -o file_mode=0777,dir_mode=0777,vers=3.0,<masked> // /var/lib/kubelet/pods/425012d1-13ee-4c40-bf40-d2f7ccfe5954/volumes/kubernetes.io~azure-file/fileshare-pv Output: mount: /var/lib/kubelet/pods/425012d1-13ee-4c40-bf40-d2f7ccfe5954/volumes/kubernetes.io~azure-file/fileshare-pv: bad option; for several filesystems (e.g. nfs, cifs) you might need a /sbin/mount.<type> helper program. 

Then I updated my Dockerfile to install cifs-utils -

FROM ubuntu:16.04 # Install Java RUN apt-get update && \ apt-get install -y openjdk-8-jdk && \ apt-get install -y ant && \ apt-get install -y cifs-utils && \ apt-get clean; ENV PORT 8080 EXPOSE 8080 COPY target/*.jar /opt/app.jar WORKDIR /opt CMD ["java", "-jar", "app.jar"] 

Still that error doesn't go. I googled a lot for solution but no luck. Is there any limitation in using azure file share with kubernates container in docker-desktop [windows machine]?

Here are my K8 configurations -

secret.yaml

apiVersion: v1 kind: Secret metadata: name: storage-secret namespace: default type: Opaque data: azurestorageaccountname: BASE64-encoded-account-name azurestorageaccountkey: BASE64-encoded-account-key 

pv.yaml

apiVersion: v1 kind: PersistentVolume metadata: name: fileshare-pv labels: usage: fileshare-pv spec: capacity: storage: 1Gi accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Retain azureFile: secretName: storage-secret shareName: myshare readOnly: false 

pvc.yaml

kind: PersistentVolumeClaim apiVersion: v1 metadata: name: fileshare-pvc namespace: default # Set this annotation to NOT let Kubernetes automatically create # a persistent volume for this volume claim. annotations: "" spec: accessModes: - ReadWriteMany resources: requests: storage: 1Gi selector: # To make sure we match the claim with the exact volume, match the label matchLabels: usage: fileshare-pv 

deployment.yaml

apiVersion: apps/v1 kind: Deployment metadata: name: hello-world namespace: default labels: app: hello-world spec: replicas: 1 selector: matchLabels: app: hello-world template: metadata: labels: app: hello-world spec: containers: - name: hello-world-pod image: 'hello-world-k8:1.0' volumeMounts: - name: azure mountPath: /azureshare ports: - containerPort: 8080 volumes: - name: azure persistentVolumeClaim: claimName: fileshare-pvc --- apiVersion: v1 kind: Service metadata: name: hello-world-service namespace: default spec: selector: app: hello-world ports: - name: http protocol: TCP port: 8080 targetPort: 8080 type: LoadBalancer 

2 Answers

You likely need to install a package that knows how to mount that file system. For NFS this may be nfs-common with Debian/Ubuntu.

sudo apt update && sudo apt install nfs-common -y

2

It happened on my ubuntu server 22.04 LTS machine. Use sudo apt install nfs-common or sudo apt install nfs-utils to resolve it.

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

You Might Also Like