<p>I am encountering problems when using <code>nodeSelector</code> in my Kubernetes manifest. I have a nodegroup in EKS with the label <code>eks.amazonaws.com/nodegroup=dev-nodegroup</code>. This node has a name with the corresponding ip, as usual in AWS. If I set the <code>nodeName</code> in the manifest, everything works and the pod is deployed in the corresponding node but when I do:</p>
<pre><code>nodeSelector:
      eks.amazonaws.com/nodegroup: dev-nodegroup
</code></pre>
<p>in my manifest, at the same indentation level as the <code>containers</code> there is a <code>FailedScheduling</code></p>
<pre><code> Warning  FailedScheduling  3m31s (x649 over 11h)  default-scheduler  0/1 nodes are available: 1 node(s) had no available disk.
</code></pre>
<p>Am I doing something wrong? I would also like to add the <code>zone</code> label to the node selector but it yields the same problem.</p>
<p>What does 'had no available disk' mean? I have chechedk my node doing <code>df -h</code> and there is enough free disk space. I have seen other questions where the output is that the node is unreachable or have some taint, mine doesn't have any.</p>
<p>Any help is greatly appreciated.</p>
<p><strong>EDIT</strong></p>
<p>I have a volume mounted in the pod like this:</p>
<pre><code>volumes:
    - name: &lt;VOLUME_NAME&gt;
      awsElasticBlockStore:
        volumeID: &lt;EBS_ID&gt;
        fsType: ext4
</code></pre>
<p>Since EBS are deployed only in one <code>zone</code> I would need to set the <code>zone</code> selector as well.</p>
<p>Also I have this storageClass (just noticed it):</p>
<pre><code>Name:            gp2
IsDefaultClass:  Yes
Annotations:     kubectl.kubernetes.io/last-applied-configuration={&quot;apiVersion&quot;:&quot;storage.k8s.io/v1&quot;,&quot;kind&quot;:&quot;StorageClass&quot;,&quot;metadata&quot;:{&quot;annotations&quot;:{&quot;storageclass.kubernetes.io/is-default-class&quot;:&quot;true&quot;},&quot;name&quot;:&quot;gp2&quot;},&quot;parameters&quot;:{&quot;fsType&quot;:&quot;ext4&quot;,&quot;type&quot;:&quot;gp2&quot;},&quot;provisioner&quot;:&quot;kubernetes.io/aws-ebs&quot;,&quot;volumeBindingMode&quot;:&quot;WaitForFirstConsumer&quot;}
,storageclass.kubernetes.io/is-default-class=true
Provisioner:           kubernetes.io/aws-ebs
Parameters:            fsType=ext4,type=gp2
AllowVolumeExpansion:  &lt;unset&gt;
MountOptions:          &lt;none&gt;
ReclaimPolicy:         Delete
VolumeBindingMode:     WaitForFirstConsumer
Events:                &lt;none&gt;
</code></pre>
<p><strong>EDIT2</strong></p>
<p>My cluster has only one nodegroup with one node, in case this helps, too.</p>

<p><code>Yes, otherwise it would not deploy the pod when I set the nodeName instead</code></p>
<p>For EBS volume it can only mount to a node once. The second time you run a pod trying to mount the <strong>same volume on the same node</strong> you will get this error. For your case, you should delete the pod that currently have the volume mounted since you only have 1 node (given your error: <code>default-scheduler  0/1 nodes are available: 1 node(s) had no available disk.</code>), before you run another pod that would mount the same volume again.</p>
