我有一个安装了knative的AKS集群应用程序,我试图请求更新其自动缩放设置。我目前正在做这个:
def update_service_autoscaling(self, service_name: str, namespace: str, min_scale: int, max_scale: int):
uri = f"https://{self.api_server_url}/apis/serving.knative.dev/v1/namespaces/{namespace}/services/{service_name}"
headers = {
"Authorization": f"Bearer {self.api_server_token}",
"content-type": "application/json-patch+json",
}
patch_data = [
{
"op": "add",
"path": "/spec/template/metadata/annotations/autoscaling.knative.dev~1min-scale",
"value": str(min_scale),
},
{
"op": "add",
"path": "/spec/template/metadata/annotations/autoscaling.knative.dev~1max-scale",
"value": str(max_scale),
}
]
response = requests.patch(
uri,
headers=headers,
verify=False,
json=patch_data,
)
if response.status_code != 200:
exception_message = f"HTTP {response.status_code}: {response.json()['message']}"
raise Exception(exception_message)
return response.json()
从理论上讲,它应该工作,所有的参数都被正确地达到,但当我发出请求时,我得到“HTTP 422:服务器拒绝了我们的请求,因为我们的请求中存在错误。我已经通过VSCode调试,但找不到它的问题。
1条答案
按热度按时间plicqrtu1#
Knative服务通过向Knative服务的API发送PATCH请求来自动缩放设置。它独立于Azure服务,可与任何安装了Knative的Kubernetes集群一起使用。HTTP 422错误代码表示服务器理解请求,但由于客户端错误而无法处理。检查
URI
、Authorization
标头和patch_data
。错误处理:
我还交叉检查了使用Azure SDK管理Azure AKS集群。它为AKS群集的代理池启用自动缩放,并为池中的节点设置最小和最大计数。此代码特定于Azure AKS,用于更新AKS群集设置,两者都会导致相同的响应。