在按照教程操作时发现这里我发现我需要 autoscaling/v2beta2 来为水平 Pod 自动缩放器提供自定义指标,但不知道如何启用它。
环境详情:
- Google Cloud 平台
- Kubernetes 版本 1.13.7-gke.8(最新)
我尝试了什么:
使用“kubectl api-versions”,我检查了为自动缩放启用了哪些 API 组,并且只有以下内容:autoscaling/v1 autoscaling/v2beta1
我发现以下内容文档上面写着“某些资源和 API 组默认处于启用状态。可以通过在 apiserver 上设置 --runtime-config 来启用或禁用它们。--runtime-config 接受逗号分隔的值。”。看一下kube-apiserver 命令文档,我可以找到一种方法来为 gcloud 使用此命令
答案1
如果你在 GKE 上遇到启用 API 的问题
autoscaling/v1
autoscaling/v2beta1
虽然 GKE 版本已经发布,但1.12 to 1.14
你无法应用清单,autoscaling/v2beta2
但是你可以应用类似的东西
apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
name: core-deployment
namespace: default
spec:
maxReplicas: 9
minReplicas: 5
scaleTargetRef:
apiVersion: extensions/v1beta1
kind: Deployment
name: core-deployment
metrics:
- type: Resource
resource:
name: cpu
targetAverageValue: 500m
如果你想根据利用率
apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
name: core-deployment
namespace: default
spec:
maxReplicas: 9
minReplicas: 5
scaleTargetRef:
apiVersion: extensions/v1beta1
kind: Deployment
name: core-deployment
metrics:
- type: Resource
resource:
name: cpu
targetAverageUtilization: 80
答案2
关于您的 API 版本:没问题,使用 autoscaling/v2beta1 您甚至可以根据外部指标(例如 Stackdriver)进行自动缩放。
关于您的问题:我不确定您说的“我无法启用它”是什么意思。从您链接的同一页面,您可以找到所需清单的 80%:
apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
name: php-apache
namespace: default
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: php-apache
minReplicas: 1
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 50
此清单表示“拥有 1 到 10 个副本,基于 CPU 利用率扩展 scaleTargetRef 中描述的内容”。您还可以添加基于内存的指标,它将以“或”方式工作(如果两个指标中的一个超过阈值,则会发生扩展)。最后,您还可以添加一个指标,该指标type: External
将成为您的 Stackdriver 源(例如 HTTP 请求数、队列中的消息数......)。通常建议这样做,因为基于 CPU 的扩展是无效的。
一旦您有了清单,只需使用 kubectl apply -f hpa.yaml 即可启用它。
这就是为什么我说我没有完全理解你的问题,你的意思是你找不到合适的清单?(我在这里写的那个也不是“合适的”)
我找不到来源(这是一篇关于带有外部指标的 HPA 的文章),但这是我的 HPA 的清单:
apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
name: myapp-hpa
namespace: myapp
spec:
minReplicas: 3
maxReplicas: 15
scaleTargetRef:
apiVersion: extensions/v1beta1
kind: Deployment
name: myapp
metrics:
- type: Resource
resource:
name: memory
targetAverageUtilization: 60
- type: External
external:
metricName: loadbalancing.googleapis.com|https|request_count
metricSelector:
matchLabels:
resource.labels.url_map_name: k8s-um-myapp-myapp-ingress--64658eaf6b9dce0
targetAverageValue: 100
我根据 RAM 和请求进行扩展。
高血压