3

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

4

2 回答 2

6

更新:这是一个非常古老的方法。我们现在有更好的工具来备份 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

于 2016-12-07T18:46:33.937 回答
5

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

(免责声明:我在方舟上为 Heptio 工作)

于 2018-01-29T15:32:29.170 回答