如何在Kubernetes部署中使用水平自动缩放器

问题描述 投票:1回答:2

编辑:

SOLUTION:我忘了将target_cpu_utilization_percentage添加到autoscaler.tf文件中


我想在Kubernetes上运行Python(或其他语言)的Web服务,但需要自动扩展。

我创建了一个Deployment和一个Horizontal Autoscaler但是没有用。

我正在使用Terraform来配置Kubernetes。

我有这个文件:

deployments.台风

resource "kubernetes_deployment" "rui-test" {
  metadata {
    name = "rui-test"
    labels {
      app  = "rui-test"
    }
  }
  spec {
    strategy = {
      type = "RollingUpdate"
      rolling_update = {
        max_unavailable = "26%" # This is not working
      }
    }
    selector = {
        match_labels = {
            app = "rui-test"
        }
    }
    template = {
      metadata = {
        labels = {
          app = "rui-test"
        }
      }
      spec = {
        container {
          name              = "python-test1"
          image             = "***************************"
        }
      }
    }
  }
}

auto scaler.台风

resource "kubernetes_horizontal_pod_autoscaler" "test-rui" {    
  metadata {
    name = "test-rui"
  }
  spec {
    max_replicas = 10 # THIS IS NOT WORKING
    min_replicas = 3  # THIS IS NOT WORKING

    scale_target_ref {
      kind = "Deployment"
      name = "test-rui" # Name of deployment
    }
  }
}

service.台风

resource "kubernetes_service" "rui-test" {
  metadata {
    name = "rui-test"
    labels {
      app  = "rui-test"
    }
  }
  spec {
    selector {
      app  = "rui-test"
    }
    type = "LoadBalancer"  # Use 'cluster_ip = "None"' or 'type = "LoadBalancer"'
    port {
      name = "http"
      port = 8080
    }
  }
}

当我运行kubectl get hpa时,我看到了这个:

NAME       REFERENCE             TARGETS         MINPODS   MAXPODS   REPLICAS   AGE
rui-test   Deployment/rui-test   <unknown>/80%   1         3         1          1h

代替:

rui-test   Deployment/rui-test   <unknown>/79%   3         10        1          1h

这就是我想要的。

但如果我运行kubectl autoscale deployment rui-test --min=3 --max=10 --cpu-percent=81,我会看到:

Error from server (AlreadyExists): horizontalpodautoscalers.autoscaling "rui-test" already exists

在kubernetes出现这个

enter image description here

kubernetes terraform autoscaling
2个回答
2
投票

你错过了metrics server。 Kubernetes需要确定当前的CPU /内存使用情况,以便它可以自动上下调整。

了解您是否安装了指标服务器的一种方法是运行:

$ kubectl top node
$ kubectl top pod

1
投票

Horizo​​ntal Pod AutoScaler依赖于为部署配置的资源限制。

来自documentation

请注意,如果某些pod的容器没有设置相关的资源请求,则不会定义pod的CPU利用率,并且autoscaler不会对该度量标准采取任何操作。

© www.soinside.com 2019 - 2024. All rights reserved.