我有一个用.NET7编写的自定义Web应用程序,我正在使用Kubernetes Client(C#)与Kubernetes Cluster(Azure)交互。到目前为止一切都很好,一切都像预期的那样工作,我到达了我需要与Pod Container通信的点。
让我们从一个简单的例子开始,只需创建一个新文件:
下面的命令返回BadRequest,不管我到目前为止尝试了什么:
string command_test = "touch servers_.json";
var stream_test = client.CoreV1.ConnectPostNamespacedPodExec(podname, space, command_test, container, true, true, false, false);
然后切换到WebSocketPagedPodExecAsync而不是ConnectPostPagedPodExec(使用vargs),然后我注意到以下情况(在这个例子中,我尝试创建一个包含内容的文件):
//string[] command_test = { "touch servers_.json" }; //DOES NOT WORK
//string[] command_test = { "touch", "servers_.json" }; //DOES WORK
client.WebSocketNamespacedPodExecAsync(podname, space, command_test, container, true, true, false, false).Result;
在上面的例子中,当每个单词都用逗号和引号分隔时,触摸命令似乎可以工作。
//string[] command_test = { "echo 'test' > servers_.json" }; //DOES NOT WORK
//string[] command_test = { "echo", "'test' > servers_.json" }; //DOES NOT WORK
//string[] command_test = { "echo", "'test'", ">", "servers_.json" }; //DOES NOT WORK
//var websocket_test = client.WebSocketNamespacedPodExecAsync(podname, space, command_test, container, true, true, false, false).Result;
但是使用echo的相同场景无论我尝试什么都不起作用,即使是像触摸命令那样拆分单词。
有什么想法吗?
1条答案
按热度按时间oiopk7p51#
最后我找到了答案:这是因为重定向操作符(>)是由shell解释的,而不是由echo命令解释的。因此,您需要调用shell来执行带有重定向的命令。例如,您可以尝试以下操作: