kubernetes - 如何将所有资源复制到新的命名空间?

标签 kubernetes namespaces migration

我想创建一个与旧命名空间相同的新命名空间。
我的方法看起来像这样(下面的完整命令):

kubectl get <resources> -o json --namespace OLD-NAMESPACE | jq '.items[].metadata.namespace = "NEW-NAMESPACE"' | kubectl create -f  -
这基本上以 json 格式获取所有资源定义,用新命名空间替换旧命名空间,并应用所有内容。
不幸的是,这不起作用,因为旧的定义包含命名空间特定的东西。为了避免这种情况,曾经有一个 --export已弃用的标志 see here .
任何想法我怎么能做到这一点?
完整命令:
kubectl get bindings,configmaps,endpoints,limitranges,persistentvolumeclaims,persistentvolumes,pods,podtemplates,replicationcontrollers,resourcequotas,secrets,mutatingwebhookconfigurations,validatingwebhookconfigurations,controllerrevisions,daemonsets,deployments,replicasets,statefulsets,tokenreviews,localsubjectaccessreviews,selfsubjectaccessreviews,selfsubjectrulesreviews,subjectaccessreviews,horizontalpodautoscalers,cronjobs,jobs,certificatesigningrequests,leases,endpointslices,events,ingressclasses,networkpolicies,runtimeclasses,poddisruptionbudgets,rolebindings,roles,debugattachments,csidrivers,volumeattachments -o json --namespace OLD-NAMESPACE | jq '.items[].metadata.namespace = "NEW-NAMESPACE"' | kubectl create -f  -

最佳答案

你可以试试这个

kubectl get all -n OLD_NAMESPACE -o yaml | sed -e 's/namespace: OLD_NAMESPACE/namespace:  NEW_NAMESPACE/' | kubectl apply -f -
这会起作用
如果您使用的是 1.14 以上的更高版本的 K8s sed 将用于替换命名空间
如果 kubectl get all不添加我们可以申请的所有资源
kubectl get bindings,configmaps,endpoints,limitranges,persistentvolumeclaims,persistentvolumes,pods,podtemplates,replicationcontrollers,resourcequotas,secrets,mutatingwebhookconfigurations,validatingwebhookconfigurations,controllerrevisions,daemonsets,deployments,replicasets,statefulsets,tokenreviews,localsubjectaccessreviews,selfsubjectaccessreviews,selfsubjectrulesreviews,subjectaccessreviews,horizontalpodautoscalers,cronjobs,jobs,certificatesigningrequests,leases,endpointslices,events,ingressclasses,networkpolicies,runtimeclasses,poddisruptionbudgets,rolebindings,roles,debugattachments,csidrivers,volumeattachments -n OLD_NAMESPACE -o yaml | sed -e 's/namespace: OLD_NAMESPACE/namespace:  NEW_NAMESPACE/' | kubectl apply -f -

关于kubernetes - 如何将所有资源复制到新的命名空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64985461/

相关文章:

java - 如何使用具有定义的命名空间模式的 saxon 验证无命名空间文件?

java - 是否有适用于 JBoss 4.2 到 JBoss 5.1 的迁移指南

git - 如何在存储库上使用 svn2git

mysql - 如何将历史记录从一台 Sonar 库服务器迁移到另一台?

dns - OpenShift 节点是否默认提供 dns 服务?

kubernetes - 如何删除 Kubeflow 集群?

jenkins - 声明式 Jenkins 管道使用现有的 Kubernetes Pod 模板

docker - Kubernetes Docker 多节点设置问题

c# - "Assembly Same Simple Name already been imported"错误

c# - 命名空间和类与 .NET Framework 命名空间和类相同