回答

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工作在方舟)