【问题标题】:Kubernetes Autoscaling ContainersKubernetes 自动伸缩容器
【发布时间】:2015-04-29 06:17:35
【问题描述】:

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

【问题讨论】:

    标签: jboss docker containers kubernetes


    【解决方案1】:

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

    【讨论】:

    • 接下来,如果您能够检测到需要扩展的情况(例如,关于 CPU/RAM 使用的示例),则执行扩展命令是微不足道的。 kubectl resize rc --replicas=
    【解决方案2】:

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

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

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

    https://kubernetes.io/docs/user-guide/horizontal-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
    

    【讨论】:

      【解决方案3】:

      由于 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
      

      更多详细信息可以在Horizontal scaling 描述、kubectl autoscale 文档和official blog 中的官方文档中找到。

      【讨论】:

        【解决方案4】:

        您可以使用 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 部署/task2deploy1 /80% 2 6 0

         kubectl describe  hpa 
        

        名称:task2deploy1

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

        使用以下方法继续检查 pod 数量的变化:

        kubectl describe deployment task2deploy1 
        

        【讨论】:

          猜你喜欢
          • 2017-12-19
          • 2019-11-16
          • 2020-09-08
          • 2020-10-20
          • 1970-01-01
          • 2017-05-29
          • 2021-09-01
          • 2019-05-14
          • 2016-09-05
          相关资源
          最近更新 更多