意外删除的Kubernetes命名空间

时间:2019-10-14 11:24:56

标签: kubernetes google-cloud-platform

我在Google云上有一个Kubernetes集群。我不小心删除了其中运行了几个Pod的命名空间。幸运的是,pod仍在运行,但是名称空间处于终止状态。

是否有办法将其恢复为活动状态?如果没有,那么在此命名空间中运行的吊舱的命运将如何?

谢谢

1 个答案:

答案 0 :(得分:1)

一些有关使用各种工具备份和还原Kubernetes cluster 的有趣文章:

https://medium.com/@pmvk/kubernetes-backups-and-recovery-efc33180e89d

https://blog.kubernauts.io/backup-and-restore-of-kubernetes-applications-using-heptios-velero-with-restic-and-rook-ceph-as-2e8df15b1487

https://www.digitalocean.com/community/tutorials/how-to-back-up-and-restore-a-kubernetes-cluster-on-digitalocean-using-heptio-ark

https://www.revolgy.com/blog/kubernetes-in-production-snapshotting-cluster-state

我想它们可能会有用,而不是将来而不是在您当前的情况下。如果您没有任何备份,那么您将无能为力。

请注意,在所有这些文章中,他们使用namespace deletion 模拟灾难情况,因此您可以想象这种操作的后果是什么。但是结果可能不会立即显示,您可能会看到Pod运行了一段时间,但最终命名空间删除 删除了给定命名空间中的所有kubernetes集群资源,包括{{1} }或LoadBalancers。可能需要一些时间。某些资源可能仍被另一资源使用(例如,通过运行PersistentVolumesPersistentVolume),因此可能无法删除某些资源。

您可以尝试运行this脚本以转储所有仍可用于yaml文件的资源,但是可能需要进行一些修改,因为您将无法再列出属于已删除名称空间的对象。您可能需要添加Pod标志以列出它们。

您也可以尝试转储仍然手动可用的任何资源。如果仍然可以看到--all-namespacesPods等资源,并且可以在它们上运行Deployments,则可以尝试将其定义保存到yaml文件中:

kubectl get

一旦备份了资源,您应该能够更轻松地重新创建集群。