从代码执行二进制文件失败,但从命令行运行它

时间:2017-05-05 10:49:30

标签: go kubernetes kubectl

我正在尝试从contrib存储库升级一点netperf-tester但我有一个问题,因为我不是一个好的开发人员 我为kubectl添加了一个arg:

args := []string{"run", serviceName, "--image=" + image, fmt.Sprintf("--port=%d", port), "--hostport=65530", fmt.Sprintf("--overrides='{ \"apiVersion\": \"extensions/v1beta1\", \"spec\": { \"nodeSelector\": { \"kubernetes.io/hostname\": \"%s\" } } }'", node)}

但它给了我一个错误:

2017/05/05 10:18:02 kubectl path := kubectl
2017/05/05 10:18:02 Running kubectl with args := [run netperf-tester-host --image=paultiplady/netserver:ubuntu.2 --port=12865 --hostport=65530 --overrides='{ "apiVersion": "extensions/v1beta1", "spec": { "nodeSelector": { "kubernetes.io/hostname": "10.122.16.118" } } }']
2017/05/05 10:18:04 Error adding service: exit status 1
Output: error: Invalid JSON Patch

当我手动运行时,它可以正常工作

$ kubectl run netperf-tester-host --image=paultiplady/netserver:ubuntu.2 --port=12865 --hostport=65530 --overrides='{ "apiVersion": "extensions/v1beta1", "spec": { "nodeSelector": { "kubernetes.io/hostname": "10.122.16.118" } } }'
deployment "netperf-tester-host" created

如果有人能指出错误的地方我将非常感激

1 个答案:

答案 0 :(得分:0)

根据{{​​3}},prablem是--overrides arg中针对exec的单引号,它应该如下所示:

args := []string{"run", serviceName, "--image=" + image, fmt.Sprintf("--port=%d", port), "--hostport=65530", fmt.Sprintf("--overrides={ \"apiVersion\": \"extensions/v1beta1\", \"spec\": { \"nodeSelector\": { \"kubernetes.io/hostname\": \"%s\" } } }", node)}