如何更新Kubernetes自动定标器?

时间:2016-05-10 08:31:30

标签: kubernetes autoscaling

我创建了Kubernetes autoscaler,但我需要更改其参数。我该如何更新?

我已尝试过以下操作,但失败了:

✗ kubectl autoscale -f docker/production/web-controller.yaml --min=2 --max=6
Error from server: horizontalpodautoscalers.extensions "web" already exists

3 个答案:

答案 0 :(得分:19)

您始终可以以交互方式编辑群集中的资源。对于名为web的自动缩放控制器,您可以通过以下方式对其进行编辑:

kubectl edit hpa web

如果您正在寻找更加程序化的方式来更新水平pod自动缩放器,那么您也可以更好地在yaml文件中描述自动缩放器实体。例如,这是一个简单的复制控制器,与Horizo​​ntal Pod Autoscale实体配对:

 apiVersion: v1
 kind: ReplicationController
 metadata:
   name: nginx
 spec:
   replicas: 2
   template:
     metadata:
       labels:
         run: nginx
     spec:
       containers:
       - name: nginx
         image: nginx
         ports:
         - containerPort: 80
 ---
 apiVersion: autoscaling/v1
 kind: HorizontalPodAutoscaler
 metadata:
   name: nginx
   namespace: default
 spec:
   maxReplicas: 3
   minReplicas: 2
   scaleTargetRef:
     apiVersion: v1
     kind: ReplicationController
     name: nginx

将这些内容放在名为nginx.yaml的文件中,可以通过kubectl apply -f nginx.yaml更新自动缩放器。

答案 1 :(得分:6)

首先删除自动缩放器,然后重新创建它:

✗ kubectl delete hpa web
✗ kubectl autoscale -f docker/production/web-controller.yaml --min=2 --max=6

答案 2 :(得分:5)

您也可以使用kubectl patch命令查看其当前状态

kubectl get hpa <autoscaler-name-here> -o json

示例输出:

{
"apiVersion": "autoscaling/v1",
"kind": "HorizontalPodAutoscaler",
"metadata": {
    ...
    "name": "your-auto-scaler",
    "namespace": "your-namespace",
    ...
},
"spec": {
    "maxReplicas": 50,
    "minReplicas": 2,
    "scaleTargetRef": {
        "apiVersion": "extensions/v1beta1",
        "kind": "Deployment",
        "name": "your-deployment"
    },
    "targetCPUUtilizationPercentage": 40
},
"status": {
    "currentReplicas": 1,
    "desiredReplicas": 2,
    "lastScaleTime": "2017-12-13T16:23:41Z"
}
}

如果要更新最小副本数:

kubectl -n your-namespace patch hpa your-auto-scaler --patch '{"spec":{"minReplicas":1}}'

相同的逻辑适用于自动缩放器配置中的其他参数,如果要更新允许的最大副本数,请将minReplicas更改为maxReplicas。