Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中从kubernetes客户机中的AutoscalingV2beta2Api创建_namespaced_horizontal_pod_autoscaler()?_Python_Kubernetes - Fatal编程技术网

如何在python中从kubernetes客户机中的AutoscalingV2beta2Api创建_namespaced_horizontal_pod_autoscaler()?

如何在python中从kubernetes客户机中的AutoscalingV2beta2Api创建_namespaced_horizontal_pod_autoscaler()?,python,kubernetes,Python,Kubernetes,我试图在python中使用,以便在kubernetes中创建一个水平pod自动缩放器。为此,我使用了属于的()函数 我的代码如下: my_metrics = [] my_metrics.append(client.V2beta2MetricSpec(type='Pods', pods= client.V2beta2PodsMetricSource(metric=client.V2beta2MetricIdentifier(name='cpu'), target=client.V2beta2Met

我试图在python中使用,以便在kubernetes中创建一个水平pod自动缩放器。为此,我使用了属于的()函数

我的代码如下:

my_metrics = []
my_metrics.append(client.V2beta2MetricSpec(type='Pods', pods= client.V2beta2PodsMetricSource(metric=client.V2beta2MetricIdentifier(name='cpu'), target=client.V2beta2MetricTarget(average_utilization='50',type='Utilization'))))


body = client.V2beta2HorizontalPodAutoscaler(
    api_version='autoscaling/v2beta2',
    kind='HorizontalPodAutoscaler',
    metadata=client.V1ObjectMeta(name='php-apache'),
    spec= client.V2beta2HorizontalPodAutoscalerSpec(
    max_replicas=10,
    min_replicas=1,
    metrics = my_metrics,
    scale_target_ref = client.V2beta2CrossVersionObjectReference(kind='Object',name='php-apache')
    )) 

v2 = client.AutoscalingV2beta2Api()
ret = v2.create_namespaced_horizontal_pod_autoscaler(namespace='default', body=body, pretty=True)
我得到的答复是:

HTTP response body: {
  "kind": "Status",
  "apiVersion": "v1",
  "metadata": {
    
  },
  "status": "Failure",
  "message": "HorizontalPodAutoscaler in version \"v2beta2\" cannot be handled as a HorizontalPodAutoscaler: v2beta2.HorizontalPodAutoscaler.Spec: v2beta2.HorizontalPodAutoscalerSpec.Metrics: []v2beta2.MetricSpec: v2beta2.MetricSpec.Pods: v2beta2.PodsMetricSource.Target: v2beta2.MetricTarget.AverageUtilization: readUint32: unexpected character: \ufffd, error found in #10 byte of ...|zation\": \"50\", \"type|..., bigger context ...|\"name\": \"cpu\"}, \"target\": {\"averageUtilization\": \"50\", \"type\": \"Utilization\"}}, \"type\": \"Pods\"}], \"m|...",
  "reason": "BadRequest",
  "code": 400
}
我只想使用kubernetes客户端调用等效的:

kubectl autoscale deployment php-apache --cpu-percent=50 --min=1 --max=10
任何工作示例都是非常受欢迎的。

以下错误:

意味着它需要
Uint32
,并且您正在传递一个
字符串

target=client.V2beta2MetricTarget(average_utilization='50',type='Utilization')
                                           HERE ------^^^^
将其更改为整数值,它应该可以工作



您可以在(注意类型列)中找到相同的信息。

上述示例允许通过最新版本的(v12.0.1)创建基于内存的hpa


关于参数的类型,您是对的,尽管它不能解决BadRequest-response问题。
target=client.V2beta2MetricTarget(average_utilization='50',type='Utilization')
                                           HERE ------^^^^
my_metrics = []
my_metrics.append(client.V2beta2MetricSpec(type='Resource', resource= client.V2beta2ResourceMetricSource(name='memory',target=client.V2beta2MetricTarget(average_utilization= 30,type='Utilization'))))

my_conditions = []
my_conditions.append(client.V2beta2HorizontalPodAutoscalerCondition(status = "True", type = 'AbleToScale'))

status = client.V2beta2HorizontalPodAutoscalerStatus(conditions = my_conditions, current_replicas = 1, desired_replicas = 1)

body = client.V2beta2HorizontalPodAutoscaler(
              api_version='autoscaling/v2beta2',
              kind='HorizontalPodAutoscaler',
              metadata=client.V1ObjectMeta(name=self.app_name),
              spec= client.V2beta2HorizontalPodAutoscalerSpec(
                  max_replicas=self.MAX_PODS,
                  min_replicas=self.MIN_PODS,
                  metrics = my_metrics,
                  scale_target_ref = client.V2beta2CrossVersionObjectReference(kind = 'Deployment', name = self.app_name, api_version = 'apps/v1'),
              ),
              status = status)
v2 = client.AutoscalingV2beta2Api()
ret = v2.create_namespaced_horizontal_pod_autoscaler(namespace='default', body=body, pretty=True)