我正在使用以下内容设置kubernetes集群:
我有一个简单的k8s群集,其中包含以下内容:
我也在群集上部署了一些pod,我创建了jmeter压力测试以产生人为流量。
我的问题是如何在ws上使用kops在k8s群集上创建自动缩放节点?
我刚刚在kops存储库中找到以下广告kops addons。我按照文档的说法进行部署,并且可以使用。
我的参数是:
CLOUD_PROVIDER=aws
IMAGE=gcr.io/google_containers/cluster-autoscaler:v0.4.0
MIN_NODES=1
MAX_NODES=3
AWS_REGION=us-east-2
GROUP_NAME="<the-auto-scaling-group-Name>"
SSL_CERT_PATH="/etc/ssl/certs/ca-certificates.crt" # (/etc/ssl/certs for gce)
$ kubectl get deployments --namespace=kube-system
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
cluster-autoscaler 1 1 1 1 3h
dns-controller 1 1 1 1 3h
kube-dns 2 2 2 2 3h
kube-dns-autoscaler 1 1 1 1 3h
kubernetes-dashboard 1 1 1 1 3h
然而,在压力之后我的节点使用带有压力容器的pod没有任何事情发生(100%cpu利用率)并且我的自动缩放组没有被修改。
另一方面,我以terraform导出kops输出但是没有自动缩放策略来根据cpu利用率生成自动缩放。
最后,我可以在k8s博客中找到一个entry,表明它将来会得到AWS的支持,但没有其他公告。
在AWS和kops中对该任务有任何建议或经验吗?接下来,我将尝试手动生成自动缩放策略以进行测试。
答案 0 :(得分:2)
首先使用Kubernetes gcr.io/google_containers/cluster-autoscaler:v0.5.0
时should use autoscaler 1.6.x
。
其次,根据我的理解,如果有Pending
状态的pod,自动缩放器本身只会缩放ASG,因为它不适合任何现有节点。
对于您的用例,Horizontal Pod Autoscaling会在高负载时扩展您的应用程序(受到压力),请务必提及podspec中的requests
部分。一旦autoscaler看到新缩放的pod不适合节点,它将启动新节点。
免责声明:我还没有使用Horizontal Pod Autoscaling。
答案 1 :(得分:0)
在审核了kops(open issues related with auto scaling)后,我找不到节点自动缩放的选项,正如我在我的问题中所写,我正在寻找节点自动缩放。也许在新版本的kops中会考虑。但是,我决定使用terraform从头开始设置kubernetes v1.5.4节点中的自动缩放。如果有些人对我的实现感兴趣,那么源代码就在我的个人仓库中kubernetes cluster v1 with terraform (afym)。
我会使用此基础在生产中设置群集。我希望它可以帮助别人。
谢谢,如果有人在kops中找到自动缩放配置选项,那就太棒了。