方式一:

#!/bin/bash

# 获取所有命名空间列表
namespaces=$(kubectl get namespaces -o jsonpath='{.items[*].metadata.name}')

# 遍历命名空间
for ns in $namespaces; do
echo "导出命名空间 '$ns' 的资源..."

mkdir -p "$ns" # 创建命名空间文件夹

# 导出 Deployment 资源
kubectl get deployments -n "$ns" -o yaml > "$ns/deployments.yaml"

# 导出 Ingress 资源
kubectl get ingress -n "$ns" -o yaml > "$ns/ingresses.yaml"

# 导出 Service 资源
kubectl get services -n "$ns" -o yaml > "$ns/services.yaml"

# 导出 ConfigMap 资源
kubectl get configmaps -n "$ns" -o yaml > "$ns/configmaps.yaml"
done

echo "资源导出完成。"

方式二:

#!/bin/bash
for NS in namespace;do
mkdir ./$NS
resourceList=(
deploy
services
endpoints
ingress
secrets
pvc
cm
)

printList(){
  for aa in ${resourceList[@]};
  do
    aList=$(kubectl  -n $NS get $aa |grep -v NAME  |awk '{print $1}')
    if [ ! "${aList[*]}"x == "x" ];then
      [ -d ./${NS}/$aa ] || mkdir -p ./${NS}/$aa
      for i in $aList;
      do
        echo $aa $i
        kubectl -n $NS get $aa $i -o yaml > ${NS}/${aa}/$i.yaml
      done
    fi
  done
}

# create namespaces yaml
kubectl  get namespaces $NS -o yaml > ./${NS}/${NS}-namespaces.yaml

# create pv yaml
pvList=$(kubectl get pv |grep "$NS/" |awk '{print $1}')
if [ ! "${pvList[*]}"x == "x" ];then
  for i in ${pvList[@]}
  do
    echo pv $i
    kubectl get pv $i -o yaml > $i.pv.yaml
  done
fi

printList
done

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐