Kubernetes 有没有办法从kube集群导出资源,以便将其应用到另一个集群

Kubernetes 有没有办法从kube集群导出资源,以便将其应用到另一个集群,kubernetes,Kubernetes,我正在尝试从一个集群导出一些kube资源(配置映射、部署、服务),以便将其应用到另一个集群 像这样的 kubectl--kubeconfig${src}-n${ns}获取配置映射${cm}-o yaml|\ kubectl--kubeconfig${dst}-n${ns}apply-f- 一次就可以了。第一次资源尚未创建的位置。如果我再次运行它,尝试更新目标,我会得到如下错误 对象已被修改;请将更改应用到最新版本,然后重试。 我怀疑这与输出中出现的resourceVersion或timestam

我正在尝试从一个集群导出一些kube资源(配置映射、部署、服务),以便将其应用到另一个集群

像这样的

kubectl--kubeconfig${src}-n${ns}获取配置映射${cm}-o yaml|\ kubectl--kubeconfig${dst}-n${ns}apply-f-

一次就可以了。第一次资源尚未创建的位置。如果我再次运行它,尝试更新目标,我会得到如下错误

对象已被修改;请将更改应用到最新版本,然后重试。

我怀疑这与输出中出现的resourceVersion或timestamp字段有关

是否需要输出一个资源,以便将所有服务器端特定信息剥离?另一个是一堆sed-delete和grep-v语句


TIA

您需要编辑输出数据以删除一些元数据字段,如UID、创建时间等。

您可以使用下面的命令和
--export
标志来去除集群特定的信息

kubectl get cm cmname -o yaml --export > cm.yaml

需要注意的是,
--export
已被弃用,将来将被删除。所以使用它的风险由你自己承担。

所以,随着出口的减少,我想出了这个

sub_string_A="resourceVersion|selfLink|uid|creationTimestamp"

sub_string_B="resourceVersion|selfLink|uid|creationTimestamp|annotations|last-applied-configuration|status|loadBalancer|clusterIP"

namespace=test

src=clusterA.yml
dst=clusterB.yml

dry_run=false

kubectl --kubeconfig ${src} -n ${namespace} get ingress -o yaml \
  | grep -v -E "${sub_string_A}" \
  | kubectl --kubeconfig ${dst} -n ${namespace} --dry-run=${dry_run} apply -f -

kubectl --kubeconfig ${src} -n ${namespace} get statefulsets -o yaml \
  | grep -v -E "${sub_string_B}" \
  | kubectl --kubeconfig ${dst} -n ${namespace} --dry-run=${dry_run} apply -f -

入口的行为似乎与其他资源不同。所以它得到了一种不同的模式。

它已经被弃用了。它将在将来被删除。谢谢。我确实看到了这一选择,但正如你所说,它被抹黑了。对大多数人有效。安格尔似乎仍在抱怨。