Kubernetes 自动缩放容器
Kubernetes Autoscaling Containers
是否可以自动缩放 docker 容器,其中包含 kubernetes 中的应用程序服务器(如 wildfly/tomcat/jetty/)?例如在 cpu & ram 使用或基于 http 请求?如果有我找不到的内置功能,或者是否可以为此编写类似配置脚本的内容?如果是这样,魔法在哪里发生?
容器的自动缩放还不受支持,并且不是 Kubernetes 近期 1.0 roadmap 的一部分(这意味着核心团队不会很快添加它,但当然欢迎外部贡献)。
由于 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 description, in the kubectl autoscale documentation and within the official blog.
中的官方文档中找到更多详细信息
您可以在 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
您可以使用 Horizontal Pod Autoscaler 自动缩放您的部署。
kubectl autoscale deployment task2deploy1 –cpu-percent=80 –min=2 –max=6
该命令将确保部署有最少 2 个和最多 6 个 pods,目标 CPU 利用率设置为 80%。
您可以使用以下方式列出自动缩放器:
kubectl get hpa
名称参考目标 MINPODS MAXPODS 复制品
task2deploy1 Deployment/task2deploy1 /80% 2 6 0
kubectl describe hpa
姓名:task2deploy1
屏幕上会打印很多关于自动缩放器的信息。
使用 :
继续检查 pods 数量的变化
kubectl describe deployment task2deploy1
是否可以自动缩放 docker 容器,其中包含 kubernetes 中的应用程序服务器(如 wildfly/tomcat/jetty/)?例如在 cpu & ram 使用或基于 http 请求?如果有我找不到的内置功能,或者是否可以为此编写类似配置脚本的内容?如果是这样,魔法在哪里发生?
容器的自动缩放还不受支持,并且不是 Kubernetes 近期 1.0 roadmap 的一部分(这意味着核心团队不会很快添加它,但当然欢迎外部贡献)。
由于 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 description, in the kubectl autoscale documentation and within the official blog.
中的官方文档中找到更多详细信息您可以在 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
您可以使用 Horizontal Pod Autoscaler 自动缩放您的部署。
kubectl autoscale deployment task2deploy1 –cpu-percent=80 –min=2 –max=6
该命令将确保部署有最少 2 个和最多 6 个 pods,目标 CPU 利用率设置为 80%。 您可以使用以下方式列出自动缩放器:
kubectl get hpa
名称参考目标 MINPODS MAXPODS 复制品
task2deploy1 Deployment/task2deploy1 /80% 2 6 0
kubectl describe hpa
姓名:task2deploy1
屏幕上会打印很多关于自动缩放器的信息。
使用 :
继续检查 pods 数量的变化kubectl describe deployment task2deploy1