首页 > 解决方案 > 在 C#.Net 控制台应用程序中通过 Kubernetes API 执行命令“ConnectGetNamespacedPodExec”时出现“BadRequest”错误

问题描述

我正在开发一个控制台 C#.Net 工具来通过其 API 访问 Kubernetes,我能够连接到命名空间和 Pod,但我无法在 Pod 内执行命令。当我到达最后一行代码时收到错误“BadRequest”,可能是命令“ConnectGetNamespacedPodExec”的参数有问题。如果有人可以帮助我,我将不胜感激。

KubernetesClientConfiguration myConfig = new KubernetesClientConfiguration();
myConfig.SkipTlsVerify = true;
myConfig.Host = "https://myURL.com";
myConfig.ClientCertificateData = "Removed";
myConfig.ClientCertificateKeyData = "Removed";

var k8sClient = new Kubernetes(myConfig);

//List Namespaces
var NameSpacesList = k8sClient.ListNamespace();
foreach (var item in NameSpacesList.Items)
{
    Console.WriteLine(item.Metadata.Name);
}

//List Pods
var PodsList = k8sClient.ListNamespacedPod(NameSpacesList.Items[5].Metadata.Name); //Karam
foreach (var item in PodsList.Items)
{
    Console.WriteLine(item.Metadata.Name);
}

//This is where the error happens
var str = k8sClient.ConnectGetNamespacedPodExec(name: PodsList.Items[0].Metadata.Name, namespaceParameter: NameSpacesList.Items[5].Metadata.Name, command:"ls", stderr: true, stdin: false, stdout: true, tty: true);
        

我得到的错误:

mscorlib.dll 中出现“Microsoft.Rest.HttpOperationException”类型的未处理异常。附加信息:操作返回无效状态代码“BadRequest”

异常详情:

Microsoft.Rest.HttpOperationException was unhandled
  HResult=-2146233088
  Message=Operation returned an invalid status code 'BadRequest'
  Source=KubernetesClient
  StackTrace:
       at k8s.Kubernetes.<ConnectGetNamespacedPodExecWithHttpMessagesAsync>d__88.MoveNext()
    --- End of stack trace from previous location where exception was thrown ---
       at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
       at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
       at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult()
       at k8s.KubernetesExtensions.<ConnectGetNamespacedPodExecAsync>d__121.MoveNext()
    --- End of stack trace from previous location where exception was thrown ---
       at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
       at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
       at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
       at k8s.KubernetesExtensions.ConnectGetNamespacedPodExec(IKubernetes operations, String name, String namespaceParameter, String command, String container, Nullable`1 stderr, Nullable`1 stdin, Nullable`1 stdout, Nullable`1 tty)
       at LMT.Program.Main(String[] args) in c:\MK\Projects\LMT\LMT\LMT\Program.cs:line 97
       at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
       at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
       at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Threading.ThreadHelper.ThreadStart()

标签: c#.netapikubernetes

解决方案


推荐阅读