如何在 AKS 上使用 LRS 磁盘配置 StatefulSet 以进行区域亲和性 Pod 调度?

问题描述 投票:0回答:1

我继承了在瑞士北部运行的 AKS 集群。该区域不提供 ZRS 管理的磁盘,仅提供 LRS。无法切换到 ReadWriteMany(Azure 文件)。

我在所有(三个)可用区中都有一个系统节点池。另外,我有一个自定义存储类,允许动态块存储配置。接下来,我有一个定义持久卷声明模板的有状态集。

allowVolumeExpansion: true
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  annotations:
    storageclass.kubernetes.io/is-default-class: true
  name: my-block-sc
parameters:
  cachingmode: ReadOnly
  diskEncryptionSetID: ...
  diskEncryptionType: EncryptionAtRestWithCustomerKey
  networkAccessPolicy: DenyAll
  skuName: StandardSSD_LRS
provisioned: disk.csi.azure.com
reclaimPolicy: Retain 
volumeBindingMode: WaitForFirstCustomer

现在,Pod 有时会陷入挂起状态。这是因为默认调度程序尝试在节点上创建 pod,而不是与 PV(LRS 磁盘)位于同一区域。

当然,我可以配置节点亲和性并将所有 Pod 绑定到单个区域。但这样我就无法从跨区域分布的 HA 和 pod 中获利。

那么,如何配置有状态集,以便在 Pod 崩溃或重新启动后,Pod 再次调度到同一区域?

是否有某种动态方式为 Pod 模板规范提供节点亲和力?

azure-aks high-availability azure-managed-disk
1个回答
0
投票

我遇到了类似的问题,这篇文章对我有帮助。我希望它能帮助你。 链接在这里

本质上,您需要确保 PVC 在 PV 的 ClaimRef 中正确定义。然后,您需要检查 PVC 在 pod StatefulSet 或用于部署 pod 的任何内容中是否正确定义。您可以参阅本文的绑定部分,了解有关 ClaimRef 的更多信息。 持久卷

这应确保 Pod 在重新启动时部署到相同的可用区。如果毕竟您仍然遇到问题,则可能是该节点根本没有更多空间来部署您的 Pod,因此它陷入待处理状态。如果是这种情况,那么您可能需要考虑实施优先级和抢占策略,该策略可以驱逐优先级较低的 Pod 以腾出空间。其他解决方案是垂直扩展节点,以便它可以容纳更多的 Pod。 优先级和抢占参考.

我希望这有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.