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

问题描述

我有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,会做同样的事情吗?

解决方法

关于我们学习的dry-run=client

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

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

必须为“ none”,“ server”或“ client”。如果采用客户策略,则仅打印 将发送而不发送的对象。如果采用服务器策略, 提交服务器端请求而不保留资源。

执行本地测试,我意识到当我尝试使用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中已弃用。