【问题标题】:Detach/Attach of persistent volumes in EKS在 EKS 中分离/附加持久卷
【发布时间】:2023-03-22 23:33:02
【问题描述】:

我正在使用 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 实例)。

我注意到,持久卷不会与死节点分离并重新连接到集群中的活动节点,直到节点被删除。使用 kubectl delete node 或 EKS 自动(大约 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 分钟从集群中移除死节点,然后释放卷。

【问题讨论】:

    标签: kubernetes amazon-eks persistent-volumes


    【解决方案1】:

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

    在您的 pod 规格部分添加以下内容:

    spec:
      terminationGracePeriodSeconds: 0
      ...
    

    【讨论】:

    • 谢谢!我想我刚刚解决了...这是一个小型 2 节点集群,位于不同的可用区。卷不能附加到另一个节点,因为它们不在同一个区域中,因此它们必须等待另一个节点在同一个区域中启动。我将通过添加另一个节点进行测试,看看会发生什么
    猜你喜欢
    • 2021-11-21
    • 2020-01-28
    • 1970-01-01
    • 2018-11-18
    • 2019-12-03
    • 1970-01-01
    • 1970-01-01
    • 2019-10-22
    • 1970-01-01
    相关资源
    最近更新 更多