kubectl : --dry-run 已弃用,可以替换为 --dry-run=client

NIr*_*odi 4 kubernetes kubectl amazon-eks kubeconfig

我有 aws-eks 集群,下面是我替换现有配置的命令。

kubectl create configmap flink-config --from-file=./config -o yaml --dry-run | kubectl replace -
Run Code Online (Sandbox Code Playgroud)

但是当我运行这个命令时。它给出了一个错误,如

W1009 17:00:14.998329  323115 helpers.go:553] --dry-run is deprecated and can be replaced with --dry-run=client.
Run Code Online (Sandbox Code Playgroud)

如果我将 -dry-run 替换为 -dry-run=client,它会做同样的事情吗?

Dan*_*ues 13

关于dry-run=client我们学习

--dry-run=client 标志来预览将发送到您的集群的对象,而无需真正提交它。

在 kubernetes API 参考中,我们读到:

必须是“无”、“服务器”或“客户端”。如果是客户端策略,只打印将要发送的对象,而不发送它。如果是服务器策略,提交服务器端请求而不持久化资源。

执行本地测试时,我意识到当我尝试使用 替换现有配置对象时dry-run=server,会发生以下错误。apiserver 告诉我们已经存在一个名为 的配置映射flink-config

kubectl create configmap flink-config --from-file=./config -o yaml --dry-run=server
Error from server (AlreadyExists): configmaps "flink-config" already exists
Run Code Online (Sandbox Code Playgroud)

然而,我尝试使用dry-run=client的对象不是由 apiserver 验证的,也就是说,只是由客户端验证,所以 yaml 被打印给我们:

kubectl create configmap flink-config --from-file=./config -o yaml --dry-run=client
apiVersion: v1
data:
  config: |
    FOO: foo
    MYVAR: hello
kind: ConfigMap
metadata:
  creationTimestamp: null
  name: flink-config
Run Code Online (Sandbox Code Playgroud)

所以基本上,是的,dry-run=client它与已弃用的dry-run. 的等效标志在 v1.18 中dry-run=server--server-dry-run弃用。