如何在kubernetes中将VPA与数据库pod一起使用?

如何在kubernetes中将VPA与数据库pod一起使用?,kubernetes,google-kubernetes-engine,autoscaling,Kubernetes,Google Kubernetes Engine,Autoscaling,我想为数据库吊舱应用VPA垂直吊舱自动缩放。我们是否可以使用VPA进行数据库自动缩放(垂直),因为VPA需要至少2个副本(参考:),因为它在达到设置标准时会删除POD。因此,POD被删除,因此数据也被删除 在数据库吊舱中使用VPA的最佳实践是什么?据我所知,真正的问题是如何使用多个副本运行有状态的工作负载 用于为数据库配置n副本。StatefulSet吊舱具有稳定的名称,这些名称在吊舱重新启动(和转世)期间保留。与模板(StatefulSet spec接受)和相结合,它能够跨转世保留相同的卷和网

我想为数据库吊舱应用
VPA
垂直吊舱自动缩放。我们是否可以使用
VPA
进行数据库自动缩放(垂直),因为
VPA
需要至少2个副本(参考:),因为它在达到设置标准时会删除POD。因此,POD被删除,因此数据也被删除


在数据库吊舱中使用
VPA
的最佳实践是什么?

据我所知,真正的问题是如何使用多个副本运行有状态的工作负载

用于为数据库配置n副本。StatefulSet吊舱具有稳定的名称,这些名称在吊舱重新启动(和转世)期间保留。与模板(StatefulSet spec接受)和相结合,它能够跨转世保留相同的卷和网络FQDN

查看各种数据库的掌舵图,例如,获取有用的见解


在一个旁注中,考虑使用一个运算符作为您正在使用的数据库应用程序可能是值得的。大多数应用程序的操作员都可以在上找到。

据我所知,真正的问题是如何使用多个副本运行有状态的工作负载

用于为数据库配置n副本。StatefulSet吊舱具有稳定的名称,这些名称在吊舱重新启动(和转世)期间保留。与模板(StatefulSet spec接受)和相结合,它能够跨转世保留相同的卷和网络FQDN

查看各种数据库的掌舵图,例如,获取有用的见解


在一个旁注中,考虑使用一个运算符作为您正在使用的数据库应用程序可能是值得的。大多数应用程序的操作员可在上找到。

VPA
-垂直吊舱自动称重机可通过两种方式工作:

  • 推荐模式-它将根据使用的资源推荐POD的请求和限制
  • 自动模式-它将自动分析使用情况,并设置POD的请求和限制。这将导致pod终止,以重新创建新规范,如下所述:
由于Kubernetes的限制,修改正在运行的Pod的资源请求的唯一方法是重新创建Pod。如果使用“Auto”的
updateMode
创建一个
VerticalPodAutoscaler
VerticalPodAutoscaler
将在需要更改Pod的资源请求时退出Pod

有关
VPA
概念的更多信息,请参阅上述链接

它至少需要2个副本这一事实很可能与高可用性这一事实有关。由于POD被逐出以支持新的限制,它们无法处理请求。如果此时只有一个复制副本,则此复制副本在处于终止/重新创建状态时将无法响应请求

GKE
上运行VPA有一个官方指南:

VPA
支持:
部署
以及
状态集

状态集 与部署类似,StatefulSet管理基于相同容器规范的pod。与部署不同,StatefulSet为每个pod维护一个粘性标识。这些POD是根据相同的规范创建的,但不可互换:每个POD都有一个持久标识符,它在任何重新调度过程中都会维护该标识符

如果您想使用存储卷为您的工作负载提供持久性,可以将状态集作为解决方案的一部分。

使用
PersistentVolumes
配置
StatefulSet
将确保存储在
PV
上的数据在pod终止时不会被删除

要能够将数据库与副本一起使用,您需要在数据库环境中实现

在Kubernetes环境中有关于运行数据库的指南/资源/解决方案。请选择最适合您的用例的解决方案。其中包括:

部署数据库后,您将能够运行下面的命令来提取
StatefulSet
的名称:

  • $kubectl获得sts
然后,您可以将
StatefulSet
的名称应用于
VPA
,如下所示:

apiVersion:autoscaling.k8s.io/v1 种类:垂直足自动秤 元数据: 名称:DB-VPA 规格: targetRef: apiVersion:“应用程序/v1” 种类:StatefulSet 姓名: 更新策略: updateMode:“自动” 我鼓励您也阅读这篇文章:


    • VPA
      -垂直吊舱自动称重机可通过两种方式工作:

      • 推荐模式-它将根据使用的资源推荐POD的请求和限制
      • 自动模式-它将自动分析使用情况,并设置POD的请求和限制。这将导致pod终止,以重新创建新规范,如下所述:
      由于Kubernetes的限制,修改正在运行的Pod的资源请求的唯一方法是重新创建Pod。如果使用“Auto”的
      updateMode
      创建一个
      VerticalPodAutoscaler
      VerticalPodAutoscaler
      将在需要更改Pod的资源请求时退出Pod

      有关
      VPA
      概念的更多信息,请参阅上述链接

      它至少需要2个副本这一事实很可能与高可用性这一事实有关。由于POD被逐出以支持新的限制,它们无法处理请求。如果此时只有一个复制副本,则此复制副本在处于终止/重新创建状态时将无法响应请求

      GKE
      上运行VPA有一个官方指南: