回答

1

我正在使用来自CoreOS团队的bash脚本,进行了小小的调整,效果很好。我更多地使用它来进行群集迁移,但在某些级别上也可以用于备份。

for ns in $(kubectl get ns --no-headers | cut -d " " -f1); do 
    if { [ "$ns" != "kube-system" ]; }; then 
    kubectl --namespace="${ns}" get --export -o=json svc,rc,rs,deployments,cm,secrets,ds,petsets | \ 
jq '.items[] | 
    select(.type!="kubernetes.io/service-account-token") | 
    del(
     .spec.clusterIP, 
     .metadata.uid, 
     .metadata.selfLink, 
     .metadata.resourceVersion, 
     .metadata.creationTimestamp, 
     .metadata.generation, 
     .status, 
     .spec.template.spec.securityContext, 
     .spec.template.spec.dnsPolicy, 
     .spec.template.spec.terminationGracePeriodSeconds, 
     .spec.template.spec.restartPolicy 
    )' >> "./my-cluster.json" 
    fi 
done 

如果你需要后revocer的状态,你只需要执行kubectl create -f ./my-cluster.json

+0

有用的命令,但有必要增加(所有需要的对象)如ClusterRole,ClusterRoleBinding,Role,RoleBinding ...并将'petsets'更改为'StatefulSet'。 –

4

我建议Heptio方舟 - https://github.com/heptio/ark。这是Kubernetes的通用灾难恢复解决方案。它将备份群集内的所有资源(容器,部署等),还可以拍摄持久卷的快照。

(声明:我Heptio工作在方舟)