使用Kubeadm的Kubernetes集群自动扩展

时间:2018-12-28 08:32:18

标签: amazon-web-services kubernetes scaling autoscaling kubeadm

我正在使用通过kubeadm配置的kubernetes v1.11.1,该kubeadm由五个节点和数百个Pod组成。如何基于群集的总内存利用率启用或配置群集自动缩放?

2 个答案:

答案 0 :(得分:0)

默认情况下,Kubernetes Horizo​​ntal Pod Autoscaler HPA根据集群中的CPU和内存使用率做出复制决策。但是,使用custom-metrics可以从其他计算资源中获取指标,您可以使用Prometheus。由于不推荐使用Heapster资源度量标准的主要收集器,因此您可以使用他的后继者Kubernetes Metrics Server

例如,用于观察内存利用率的HorizontalPodAutoscaler yaml配置可以类似于以下内容:

apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
  name: hello-world
spec:
  scaleTargetRef:
    apiVersion: extensions/v1beta1
    kind: Deployment
    name: hello-world
  minReplicas: 1
  maxReplicas: 10
  metrics:
  - type: Resource
    resource:
      name: memory
      targetAverageUtilization: 60

答案 1 :(得分:0)

可以在Cluster Autoscaler(CA)cluster autoscaler github page的帮助下扩展K8s群集,在那里找到有关AWS CA的信息。

由于群集中的可用群集资源不足,无法满足其CPU和内存请求,因此不是基于“总内存利用率”来扩展群集,而是基于群集中的“挂起的容器”。 基本上,Cluster Autoscaler(CA)每10秒检查一次挂起(不可调度)的Pod,如果发现,则将请求AWS Autoscaling Group(ASG)API增加ASG中的实例数量。添加到ASG的节点后,它便加入集群并准备为Pod服务。之后,K8s Scheduler将“挂起的吊舱”分配给新节点。

缩小比例是通过以下方式进行的:CA每10秒检查一次不需要的节点,并考虑将其删除,如果:如果所有Pod的CPU和内存请求之和小于节点容量的50%,则可以移动Pod到其他节点,并且没有按比例缩小禁用的注释。

如果使用Kubeadm管理AWS上的K8s集群,则以上所有情况均成立。因此,简而言之(省略了详细的详细信息,请参阅CA上的文档):

  

创建自动缩放组(ASG)aws ASG doc

     

向ASG添加标签,例如k8s.io/cluster-autoscaler/enable(强制性),   k8s.io/cluster-autoscaler/cluster_name(可选)。

     

按照官方文档在集群中启动“ CA”。