• Kubernetes Submit Queue's avatar
    Merge pull request #36280 from rkouj/better-mount-error · 0f082c66
    Kubernetes Submit Queue authored
    Automatic merge from submit-queue
    
    Better messaging for missing volume binaries on host
    
    **What this PR does / why we need it**:
    When mount binaries are not present on a host, the error returned is a generic one.
    This change is to check the mount binaries before the mount and return a user-friendly error message.
    
    This change is specific to GCI and the flag is experimental now.
    
    https://github.com/kubernetes/kubernetes/issues/36098
    
    **Release note**:
    Introduces a flag `check-node-capabilities-before-mount` which if set, enables a check (`CanMount()`) prior to mount operations to verify that the required components (binaries, etc.) to mount the volume are available on the underlying node. If the check is enabled and `CanMount()` returns an error, the mount operation fails. Implements the `CanMount()` check for NFS.
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    Sample output post change :
    
    
    rkouj@rkouj0:~/go/src/k8s.io/kubernetes$ kubectl describe pods
    Name:		sleepyrc-fzhyl
    Namespace:	default
    Node:		e2e-test-rkouj-minion-group-oxxa/10.240.0.3
    Start Time:	Mon, 07 Nov 2016 21:28:36 -0800
    Labels:		name=sleepy
    Status:		Pending
    IP:		
    Controllers:	ReplicationController/sleepyrc
    Containers:
      sleepycontainer1:
        Container ID:	
        Image:		gcr.io/google_containers/busybox
        Image ID:		
        Port:		
        Command:
          sleep
          6000
        QoS Tier:
          cpu:	Burstable
          memory:	BestEffort
        Requests:
          cpu:		100m
        State:		Waiting
          Reason:		ContainerCreating
        Ready:		False
        Restart Count:	0
        Environment Variables:
    Conditions:
      Type		Status
      Initialized 	True 
      Ready 	False 
      PodScheduled 	True 
    Volumes:
      data:
        Type:	NFS (an NFS mount that lasts the lifetime of a pod)
        Server:	127.0.0.1
        Path:	/export
        ReadOnly:	false
      default-token-d13tj:
        Type:	Secret (a volume populated by a Secret)
        SecretName:	default-token-d13tj
    Events:
      FirstSeen	LastSeen	Count	From						SubobjectPath	Type		Reason		Message
      ---------	--------	-----	----						-------------	--------	------		-------
      7s		7s		1	{default-scheduler }						Normal		Scheduled	Successfully assigned sleepyrc-fzhyl to e2e-test-rkouj-minion-group-oxxa
      6s		3s		4	{kubelet e2e-test-rkouj-minion-group-oxxa}			Warning		FailedMount	Unable to mount volume kubernetes.io/nfs/32c7ef16-a574-11e6-813d-42010af00002-data (spec.Name: data) on pod sleepyrc-fzhyl (UID: 32c7ef16-a574-11e6-813d-42010af00002). Verify that your node machine has the required components before attempting to mount this volume type. Required binary /sbin/mount.nfs is missing
    0f082c66
Name
Last commit
Last update
..
attachdetach Loading commit data...
persistentvolume Loading commit data...