在C#客户端中识别kubernetes部署规范中的错误字段

时间:2019-06-18 02:11:36

标签: .net kubernetes

我正在尝试使用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)

2 个答案:

答案 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);
}