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

问题描述 投票:0回答:1

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

kubectl create configmap flink-config --from-file=./config -o yaml --dry-run | kubectl replace -

但是当我运行这个命令时。它给出了类似的错误

W1009 17:00:14.998329  323115 helpers.go:553] --dry-run is deprecated and can be replaced with --dry-run=client.

如果我将

-dry-run
替换为
-dry-run=client
,会起到同样的作用吗?

kubernetes kubectl amazon-eks kubeconfig
1个回答
32
投票

关于

dry-run=client
我们学习

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

在 kubernetes API 参考中我们读到:

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

执行本地测试我意识到,当我尝试使用

dry-run=server
替换现有配置对象时,会发生以下错误。 apiserver 告诉我们已经存在一个名为
flink-config
的 configmap。

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

但是我尝试使用

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

所以基本上,是的,

dry-run=client
它与已弃用的
dry-run
具有相同的效果。
dry-run=server
的等效标志是
--server-dry-run
,并在 v1.18 中被弃用。

© www.soinside.com 2019 - 2024. All rights reserved.