【问题标题】:Kubernetes: specify or determine pod availability zone in an aws clusterKubernetes:指定或确定 aws 集群中的 pod 可用区
【发布时间】:2020-03-13 16:19:24
【问题描述】:

我想将一个亚马逊 ebs 卷(上面有数据)安装到我的 pod。问题是我没有找到方法在启动之前提前确定 pod 的可用区。如果 pod 不在卷的同一可用区启动,则会导致绑定错误。

如何在启动之前指定或确定 pod 的可用区?

【问题讨论】:

    标签: amazon-web-services kubernetes volume availability-zone


    【解决方案1】:

    您使用topology.kubernetes.io/zone 标签和节点选择器来处理这种事情。但是,除非您使用的是非常旧的 Kubernetes 版本,否则这应该由调度程序自动处理。

    【讨论】:

    • 我使用了 k8s 文档,但我不明白它对我有什么帮助。据我所知,它有助于服务到达“最近”节点。
    • 在当前版本中,卷应用拓扑限制作为节点调度的一部分。因此,如果附加到 pod 的卷位于 us-east-1a 中,则只会考虑该区域中的节点。
    • 我有 istio sidecars 在生产中的 2000 多个 pod 上运行。抓取这些 pod 的 prometheus 实例(我们称之为收集器)会产生大量跨 az 数据传输成本,如果我每个 az 有一个收集器 prometheus 联合到一个抓取聚合指标的父 prometheus 上,则可以降低这些成本。我对这个问题不感兴趣的原因是因为我希望我的收集器 prometheus 实例仅在它们各自的 az 中抓取 pod。
    【解决方案2】:

    我不确定是否可以提前确定要安排 pod 的时间。

    您可以在部署中设置节点亲和性,以便它们始终部署到具有特定标签的节点。

    例如,如果您用 az 标记您的节点,然后使用节点亲和性将您的 pod 分配给这些节点,您应该完成您正在尝试做的事情。

    https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#node-affinity

    【讨论】:

    • 好主意。但这不是一个完美的解决方法,因为您可以拥有不使用的节点,因为它们不在同一个 az 中,因此仅部分使用您的集群:/
    猜你喜欢
    • 1970-01-01
    • 2018-12-10
    • 1970-01-01
    • 2018-08-31
    • 1970-01-01
    • 2019-11-30
    • 2020-03-30
    • 1970-01-01
    • 2019-03-27
    相关资源
    最近更新 更多