在实际生产中,有些 pod 由于需要更换命名空间(namespace),如果没有原始的 yaml 文件,就需要将现有的 pod 信息导出,修改后,重新 apply

1 新建文件夹
root@master1:~# mkdir bi-parking-lot
root@master1:~# mkdir mall-bi-system
root@master1:~# mkdir scpg-ta-service
2 导出 ingress
kubectl get -n project-keycloak ingress tenantadvisor-production -o yaml > tenantadvisor-production.yaml
3 导出 svc
root@master1:~# kubectl get svc -n project-keycloak
NAME              TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
bi-parking-lot    ClusterIP   10.233.17.58    <none>        8080/TCP   4d17h
keycloak          ClusterIP   10.233.18.229   <none>        8080/TCP   5d16h
mall-bi-system    ClusterIP   10.233.16.114   <none>        8080/TCP   4d15h
scpg-ta-service   ClusterIP   10.233.38.140   <none>        8080/TCP   4d17h
root@master1:~# kubectl get svc bi-parking-lot -n project-keycloak -o yaml > bi-parking-lot/bi-parking-lot-svc.yaml
root@master1:~# kubectl get svc mall-bi-system -n project-keycloak -o yaml > mall-bi-system/mall-bi-system-svc.yaml
root@master1:~# kubectl get svc scpg-ta-service -n project-keycloak -o yaml > scpg-ta-service/scpg-ta-service-svc.yaml
root@master1:~# 
4 导出 deploy
root@master1:~# kubectl get deploy -n project-keycloak
NAME              READY   UP-TO-DATE   AVAILABLE   AGE
bi-parking-lot    1/1     1            1           4d17h
keycloak          1/1     1            1           5d16h
mall-bi-system    1/1     1            1           4d15h
scpg-ta-service   1/1     1            1           4d16h
root@master1:~# kubectl get deploy bi-parking-lot -n project-keycloak -o yaml > bi-parking-lot/bi-parking-lot-deploy.yaml
root@master1:~# kubectl get deploy mall-bi-system -n project-keycloak -o yaml > mall-bi-system/mall-bi-system-deploy.yaml
root@master1:~# kubectl get deploy scpg-ta-service -n project-keycloak -o yaml > scpg-ta-service/scpg-ta-service-deploy.yaml
root@master1:~# 
5 导出 config
root@master1:~# kubectl get cm -n project-keycloak
NAME                 DATA   AGE
mall-bi-system       1      4d15h
new-bi-parking-lot   1      4d17h
ta-config            1      4d15h
root@master1:~# kubectl get cm mall-bi-system -n project-keycloak -o yaml >mall-bi-system/mall-bi-system-cm.yaml
root@master1:~# kubectl get cm new-bi-parking-lot -n project-keycloak -o yaml > bi-parking-lot/new-bi-parking-lot-cm.yaml
root@master1:~# kubectl get cm ta-config -n project-keycloak -o yaml > scpg-ta-service/ta-config.yaml
root@master1:~# 
6 导出 secret
root@master1:~# kubectl get secret -n project-keycloak
NAME                   TYPE                                  DATA   AGE
admin-console-secret   Opaque                                1      5d11h
default-token-24v9k    kubernetes.io/service-account-token   3      5d17h
harborsecretkey        kubernetes.io/dockerconfigjson        1      4d17h
ylharborsecretkey      kubernetes.io/dockerconfigjson        1      4d16h
root@master1:~# kubectl get secret ylharborsecretkey -n project-keycloak -o yaml > mall-bi-system/ylharborsecretkey.yaml
root@master1:~# 
7 修改导出的 yaml 文件

每个 yaml 都需要删除一些不需要的东西,否则加入 rancher 会报错

比如

......
managedFields:
  - apiVersion: apps/v1
    fieldsType: FieldsV1
    fieldsV1:
      f:metadata:
        f:annotations:
          .: {}
          f:field.cattle.io/creatorId: {}
        f:labels:
          .: {}
          f:cattle.io/creator: {}
          f:workload.user.cattle.io/workloadselector: {}
      f:spec:
        f:progressDeadlineSeconds: {}
        f:replicas: {}
        f:revisionHistoryLimit: {}
        f:selector:
          f:matchLabels:
            .: {}
            f:workload.user.cattle.io/workloadselector: {}
        f:strategy:
          f:rollingUpdate:
            .: {}
            f:maxSurge: {}
            f:maxUnavailable: {}
          f:type: {}
......
8 apply 新的 yaml文件
cd bi-parking-lot
kubectl apply -f .
cd mall-bi-system
kubectl apply -f .
cd scpg-ta-service
kubectl apply -f .
9 删除旧的 pod

可以后从往前删

  1. 删除 configmap
  2. 删除 deploy
  3. 删除 svc
  4. 删除 ingress
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐