【发布时间】:2019-08-31 07:44:19
【问题描述】:
以下命令在 Ubuntu bash 上运行良好:
kubectl patch deployment wapi-backend-d1 --patch '{"spec": {"template": {"metadata": {"labels": {"date": "test"}}}}}'
同一命令在 Windows Powershell 控制台 (ISE) 中不起作用。
错误是:
kubectl : Error from server (BadRequest): invalid character 's' looking for beginning of object key string
At line:1 char:1
+ kubectl patch deployment wapi-backend-d1 --patch '{"spec": {"template ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (Error from serv...ject key string:String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
powershell控制台版本为:
PS > $PSVersionTable
Name Value
---- -----
PSVersion 5.1.14409.1005
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.14409.1005
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
我也尝试过使用不同的补丁值的命令,因为我看到有人写道,如果补丁已经应用,它可能会失败。
路径 /spec/template/metadata/labels/date 确实存在于部署的 yaml 中,所以这也不是问题。
我认为这可能与 kubectl 在 Powershell 中与引号有关的工作方式不同有关,但找不到使其工作的方法。
我试过了
kubectl patch deployment wapi-backend-d1 --patch "{\"spec\": {\"template\": {\"metadata\": {\"labels\": {\"date\": \"test123\"}}}}}"
但这会导致
Error from server (NotFound): deployments.extensions "spec\\: {\\template\\: {\\metadata\\: {\\labels\\: {\\date\\: \\test123\\}}}}}" not found
Powershell 上的命令应该是什么?
【问题讨论】:
-
你能从文件中获取 json 吗?
标签: powershell syntax parameter-passing kubectl quoting