3

是否可以在 kubernetes 中自动缩放包含应用程序服务器(如 wildfly/tomcat/jetty/)的 docker 容器?例如在 cpu & ram 使用或基于 http 请求?如果有一个内置功能,我找不到它,或者是否可以为此编写类似配置脚本的东西?如果是这样,魔法发生在哪里?

4

4 回答 4

4

容器的自动缩放尚不支持,也不属于 Kubernetes 近期1.0 路线图的一部分(这意味着核心团队不会很快添加它,但当然欢迎外部贡献)。

于 2015-02-26T23:08:15.767 回答
2

您可以在 kubernetes 1.3 及更高版本中使用水平 pod 自动缩放。kubernetes 博客提供了有关该功能的详细信息。

http://blog.kubernetes.io/2016/07/autoscaling-in-kubernetes.html

但以上文章主要关注 GKE。所以下面会提供更多信息。

https://kubernetes.io/docs/user-guide/horizo​​ntal-pod-autoscaling/

此处描述了如何使用 kubectl 进行 pod 自动缩放。

 kubectl autoscale (-f FILENAME | TYPE NAME | TYPE/NAME) [--min=MINPODS] --max=MAXPODS [--cpu-percent=CPU] [flags]

例子

# Auto scale a deployment "foo", with the number of pods between 2 and 10, target CPU utilization specified so a default autoscaling policy will be used:
  kubectl autoscale deployment foo --min=2 --max=10

  # Auto scale a replication controller "foo", with the number of pods between 1 and 5, target CPU utilization at 80%:
  kubectl autoscale rc foo --max=5 --cpu-percent=80
于 2017-02-24T00:56:22.517 回答
1

由于 Kubernetes 1.2 自动缩放是稳定 API 的一部分。它是根据 CPU 使用率或容器本身提供的指标来完成的。

它可以用于部署或复制控制器,如下所示:

# Auto scale a deployment "foo", with the number of pods between 2 and 10, target CPU utilization specified so a default autoscaling policy will be used:
kubectl autoscale deployment foo --min=2 --max=10

# Auto scale a replication controller "foo", with the number of pods between 1 and 5, target CPU utilization at 80%:
kubectl autoscale rc foo --max=5 --cpu-percent=80

更多详细信息可以在官方文档中的水平缩放描述、kubectl autoscale文档和官方博客中找到。

于 2017-02-23T16:51:20.430 回答
0

您可以使用 Horizo​​ntal Pod Autoscaler 自动扩展您的部署。

 kubectl autoscale deployment task2deploy1 –cpu-percent=80 –min=2 –max=6

该命令将确保部署具有最少 2 个和最多 6 个 pod,目标 CPU 利用率设置为 80%。您可以使用以下命令列出自动缩放器:

 kubectl get hpa

名称 参考 目标 MINPODS MAXPODS REPLICAS
task2deploy1 Deployment/task2deploy1 /80% 2 6 0

 kubectl describe  hpa 

名称:task2deploy1

很多关于自动缩放器的信息会打印在屏幕上。

使用以下命令继续检查 pod 数量的变化:

kubectl describe deployment task2deploy1 
于 2019-02-06T05:39:05.050 回答