备份/恢复Kubernetes的当前状态(名称空间/窗格/控制器/等) [英] Backup/Recover Kubernetes' current state (Namespaces/Pods/Controllers/etc)

查看:147
本文介绍了备份/恢复Kubernetes的当前状态(名称空间/窗格/控制器/等)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I would like to be able to get a description of my current state of the cluster so that in the future I would be able to recover from a failure. Aside from recreating all of the services from source/cli individually, what solutions are available?

推荐答案

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

Update: this is a really old method. We now have much better tools to backup k8s clusters, like velero

我正在使用CoreOS团队的bash脚本,进行了一些小的调整,效果很好.我将它更多地用于群集迁移,但在某种程度上也可以用于备份.

I'm using a bash script from CoreOS team, with small adjustments, that works pretty good. I'm using it more for cluster migration, but at some level can be used for backups too.

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

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

In case you need to revocer the state after, you just need to execute kubectl create -f ./my-cluster.json

这篇关于备份/恢复Kubernetes的当前状态(名称空间/窗格/控制器/等)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆