Use*_*645 6 migration namespaces kubernetes
我想创建一个与旧名称空间相同的新名称空间。
我的方法看起来像这样(完整命令如下):
kubectl get <resources> -o json --namespace OLD-NAMESPACE | jq '.items[].metadata.namespace = "NEW-NAMESPACE"' | kubectl create -f -
Run Code Online (Sandbox Code Playgroud)
这基本上以 json 格式获取所有资源定义,用新名称空间替换旧名称空间,然后应用所有内容。
不幸的是,这不起作用,因为旧的定义包含名称空间特定的东西。为了避免这种情况,曾经有一个--export
标志,但已被弃用,请参阅此处。
知道我该怎么做吗?
完整命令:
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 -
Run Code Online (Sandbox Code Playgroud)
你可以试试这个
kubectl get all -n OLD_NAMESPACE -o yaml | sed -e 's/namespace: OLD_NAMESPACE/namespace: NEW_NAMESPACE/' | kubectl apply -f -
Run Code Online (Sandbox Code Playgroud)
这会起作用
如果您使用 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 -
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5766 次 |
最近记录: |