我正在尝试使用Kubernetes的C#客户端定义部署规范。我的规范字段的值是由其他一些应用程序产生的。这样,部署有时会失败,并且出现Unprocessable entity
(Microsoft.Rest.HttpOperationException)错误。但是,实际上很难确定哪个字段会导致无法处理的实体错误。
有人可以告诉我如何识别错误的字段吗?
这是痕迹:
Microsoft.Rest.HttpOperationException: Operation returned an invalid status code 'UnprocessableEntity'
at k8s.Kubernetes.CreateNamespacedDeploymentWithHttpMessagesAsync(V1Deployment body, String namespaceParameter, String dryRun, String fieldManager, String pretty, Dictionary`2 customHeaders, CancellationToken cancellationToken)
at k8s.KubernetesExtensions.CreateNamespacedDeploymentAsync(IKubernetes operations, V1Deployment body, String namespaceParameter, String dryRun, String fieldManager, String pretty, CancellationToken cancellationToken)
at k8s.KubernetesExtensions.CreateNamespacedDeployment(IKubernetes operations, V1Deployment body, String namespaceParameter, String dryRun, String fieldManager, String pretty)
答案 0 :(得分:0)
所有Kubernetes请求都通过kube-apiserver
。部署规范需要符合here中记录的API规范。
您可以先查看kube-apiserver日志。如果部署正常(如果有部署YAML清单文件吗?),也可以向后移动。例如,您可以尝试从部署的YAML清单中删除一些字段,然后运行kubectl apply -f deployment.yaml
以查看是否可以重现该错误。
答案 1 :(得分:0)
通过打印出Microsoft.Rest.HttpOperationException的Response.Content字段,我能够得到更详细的错误。
try
{
// Code for deployment
}
catch(Microsoft.Rest.HttpOperationException e)
{
Console.WriteLine(e.Response.Content);
}