首页 > 解决方案 > 在 EKS 中分离/附加持久卷

问题描述

我正在使用 EKS,并且正在从存储类和持久卷声明动态创建持久卷。这是我的演示 yaml:-

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: test-storage
provisioner: kubernetes.io/aws-ebs
parameters:
  type: gp2
  zones: us-east-1b
reclaimPolicy: Retain
allowVolumeExpansion: true
mountOptions:
  - debug
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: test-pvc
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: test-storage
  resources:
    requests:
      storage: 1Gi

我正在测试当持久卷附加到“死亡”的节点时会发生什么(我正在关闭 AWS 控制台中的 EC2 实例)。

我注意到的是,持久卷不会与死节点分离并重新连接到集群中的活动节点,直到节点被删除。通过EKSkubectl delete node或自动(大约 20 分钟后)。

我想知道的是,有没有办法改变这种默认行为?要么减少 EKS 自动从集群中删除节点所花费的时间,要么在分离附加控制器启动以将持久卷移动到活动节点时进行更改。

提前致谢。

- 编辑 -

最初,我意识到 Pod 不会联机,因为两个节点(2 个节点集群)都位于不同的可用区中,因此卷无法连接到集群中的另一个节点,并且必须等待 EKS 启动同一可用区中的新节点。

我在与另一个节点相同的可用性组中启动另一个节点并再次运行测试。

该 pod 仍会尝试出现在新 pod 上,但由于卷仍附加到旧 pod 上,因此仍处于挂起状态

Multi-Attach error for volume "pvc-xxxxxxxx" Volume is already used by pod(s) podname-xxxxx"

无论如何,是否可以更改 EKS 终止死节点上的 pod 所需的默认时间,以便释放卷并可以附加到新 pod 挂起的新节点?

默认情况下,EKS 需要 20 分钟从集群中删除死节点,然后释放卷。

标签: kubernetesamazon-ekspersistent-volumes

解决方案


您可以在您的 pod spec 中将删除宽限期设置为 0。这可能会帮助您快速删除您的 pod。

在您的 pod 规格部分中,只需添加以下内容:

spec:
  terminationGracePeriodSeconds: 0
  ...

推荐阅读