备份/恢复Kubernetes的当前状态(Namespaces/Pods/Controllers/etc)

tow*_*nie 1 backup backup-strategies kubernetes kubernetes-health-check

我希望能够获得我当前群集状态的描述,以便将来我能够从失败中恢复.除了从source/cli单独重新创建所有服务之外,还有哪些解决方案?

Cam*_*mil 5

更新:这是一个非常古老的方法。现在,我们有了更好的工具来备份k8s集群,例如velero

我使用的是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
Run Code Online (Sandbox Code Playgroud)

万一需要取消状态,只需要执行 kubectl create -f ./my-cluster.json


ncd*_*cdc 5

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

(免责声明:我为Heptio on Ark工作)