我希望能够获得我当前群集状态的描述,以便将来我能够从失败中恢复过来。除了从source / cli单独重新创建所有服务之外,还有哪些解决方案?
答案 0 :(得分:5)
我推荐Heptio Ark - https://github.com/heptio/ark。它是Kubernetes的通用灾难恢复解决方案。它将备份集群内的所有资源(窗格,部署等),还可以拍摄持久卷的快照。
(免责声明:我为方舟上的Heptio工作)
答案 1 :(得分:4)
更新:这是一个非常古老的方法。我们现在有更好的工具来备份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
如果你需要在之后撤销状态,你只需要执行kubectl create -f ./my-cluster.json