编辑:
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出现这个
你错过了metrics server。 Kubernetes需要确定当前的CPU /内存使用情况,以便它可以自动上下调整。
了解您是否安装了指标服务器的一种方法是运行:
$ kubectl top node
$ kubectl top pod
Horizontal Pod AutoScaler依赖于为部署配置的资源限制。
请注意,如果某些pod的容器没有设置相关的资源请求,则不会定义pod的CPU利用率,并且autoscaler不会对该度量标准采取任何操作。