我正在尝试使用kubectl apply
命令更新k8sdeployment
。该部署已经存在于集群中,并且是使用现在提供给apply
命令的相同YAML文件创建的,但略有更改。
$ kubectl apply –f ./my_app_deployment_update.yaml
error: must specify one of -f and -k
第一次创建对象时也出现了这个问题,但我当时使用kubectl create
解决了这个问题。
当然,该文件在当前文件夹中可用。此外,我还检查了我没有定义为kubectl
的别名,所以我运行的实际命令只是您在上面看到的kubectl
。
最后,我的kubectl
版本是:
$ kubectl version
Client Version: version.Info{Major:"1", Minor:"23", GitVersion:"v1.23.4", GitCommit:"e6c093d87ea4cbb530a7b2ae91e54c0842d8308a", GitTreeState:"clean", BuildDate:"2022-02-16T12:30:48Z", GoVersion:"go1.17.6", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.12", GitCommit:"e2a822d9f3c2fdb5c9bfbe64313cf9f657f0a725", GitTreeState:"clean", BuildDate:"2020-05-06T05:09:48Z", GoVersion:"go1.12.17", Compiler:"gc", Platform:"linux/amd64"}
WARNING: version difference between client (1.23) and server (1.15) exceeds the supported minor version skew of +/-1
我知道上面的警告,但我既不能减少kubectl
的当前版本(因为我使用+1个集群(,也不能更新集群中的k8s
版本。除了IMO之外,客户端/服务器版本不匹配不应该是上述错误的原因,关于提供给客户端本身的参数。
最后,我一直在检查文档,但我没有发现任何对故障排除有用的东西,甚至对-k
选项本身也没有。
对正在发生的事情或如何解决有什么想法吗?也许我在更高层次上误解了kubectl apply
的用法?
更新1
我已经用同样的错误检查了另一篇文章,但我没有缩进错误。Linter并没有抱怨,在线验证器也说它是可以的,create
命令并没有抱怨任何事情,所以文件的缩进一直都是可以的。
这似乎不是一个非常用户友好的错误,而且可能由其他类型的问题触发,所以我们在这里玩猜测。。。
问题是它接收的是no argument
,而不是两者。
我似乎是从powerpoint文件中复制了这个命令,在测试之前我是直接在那里写的。原来的字符被替换为另一个看起来相似的字符:
–f vs -f
First: 8211, Hex 2013, Oct 20023, Digr -N
Second: 45, Hex 2d, Octal 055
因此,这个不正确的字符破坏了解析,并且没有为kubectl
提供参数。只需将其替换为上面第二个示例中的常规-
即可使该命令正常工作。