编辑:
解决方案::我忘记将target_cpu_utilization_percentage
添加到autoscaler.tf
文件中
我希望在Kubernetes上运行具有Python(或其他语言)的Web服务,但要具有自动缩放功能。
我创建了一个Deployment
和一个Horizontal Autoscaler
,但是没有用。
我正在使用Terraform配置Kubernetes。
我有以下文件:
Deployments.tf
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 = "***************************"
}
}
}
}
}
Autoscaler.tf
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.tf
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中出现
答案 0 :(得分:2)
您缺少metrics server。 Kubernetes需要确定当前的CPU /内存使用率,以便可以自动向上和向下缩放。
一种了解是否已安装指标服务器的方法是运行:
$ kubectl top node
$ kubectl top pod
答案 1 :(得分:1)
Horizontal Pod AutoScaler取决于为部署配置的资源限制。
请注意,如果某些容器的容器未设置相关的资源请求,则将不会定义容器的CPU利用率,并且自动缩放器不会对该指标采取任何操作。