4

nodeSelector在我的 Kubernetes 清单中使用时遇到问题。我在 EKS 中有一个带有标签的节点组eks.amazonaws.com/nodegroup=dev-nodegroup。这个节点有一个名称和对应的 ip,就像在 AWS 中一样。如果我nodeName在清单中设置,一切正常,并且 pod 部署在相应的节点中,但是当我这样做时:

nodeSelector:
      eks.amazonaws.com/nodegroup: dev-nodegroup

在我的清单中,在与 相同的缩进containers级别FailedScheduling

 Warning  FailedScheduling  3m31s (x649 over 11h)  default-scheduler  0/1 nodes are available: 1 node(s) had no available disk.

难道我做错了什么?我还想将zone标签添加到节点选择器,但它会产生同样的问题。

“没有可用磁盘”是什么意思?我已经检查了我的节点,df -h并且有足够的可用磁盘空间。我已经看到其他问题的输出是节点无法访问或有一些污点,我的没有。

任何帮助是极大的赞赏。

编辑

我在 pod 中安装了一个卷,如下所示:

volumes:
    - name: <VOLUME_NAME>
      awsElasticBlockStore:
        volumeID: <EBS_ID>
        fsType: ext4

由于 EBS 仅部署在一个中,zone因此我还需要设置zone选择器。

我也有这个 storageClass (刚刚注意到它):

Name:            gp2
IsDefaultClass:  Yes
Annotations:     kubectl.kubernetes.io/last-applied-configuration={"apiVersion":"storage.k8s.io/v1","kind":"StorageClass","metadata":{"annotations":{"storageclass.kubernetes.io/is-default-class":"true"},"name":"gp2"},"parameters":{"fsType":"ext4","type":"gp2"},"provisioner":"kubernetes.io/aws-ebs","volumeBindingMode":"WaitForFirstConsumer"}
,storageclass.kubernetes.io/is-default-class=true
Provisioner:           kubernetes.io/aws-ebs
Parameters:            fsType=ext4,type=gp2
AllowVolumeExpansion:  <unset>
MountOptions:          <none>
ReclaimPolicy:         Delete
VolumeBindingMode:     WaitForFirstConsumer
Events:                <none>

编辑2

我的集群只有一个节点组和一个节点,以防这也有帮助。

4

1 回答 1

1

Yes, otherwise it would not deploy the pod when I set the nodeName instead

对于 EBS 卷,它只能挂载到一个节点一次。第二次运行 pod 尝试在同一节点上挂载相同的卷时,您将收到此错误。对于您的情况,您应该删除当前安装了该卷的 pod,因为您只有一个节点(鉴于您的错误default-scheduler 0/1 nodes are available: 1 node(s) had no available disk.:),然后再运行另一个将再次安装相同卷的 pod。

于 2022-01-19T08:05:04.003 回答