在 Kubernetes 集群中跨上下文移动 resources/volumes

Move resources/volumes across contexts in Kubernetes clusters

我有一个 kubernets 集群,我从上下文开始 "dev1.k8s.local" 并且它有一个带有 EBS -PV(持久卷)的状态集 现在我们正计划开始另一个上下文 "dev2.k8s.local" 有没有办法可以将 dev1 上下文 EBS 卷移动到上下文 "dev2.k8s.local"

i am using K8S 1.10 & KOPS 1.10 Version

上下文只是 Kubernetes 配置的简单表示,通常 ~/.kube/config。此文件中可以包含手动管理或使用 kubectl context 管理的 multiple configurations

当您使用 Kops 在 AWS 上配置第二个 Kubernetes 集群时,将重新创建与另一个集群没有参考框架的全新资源。在原始集群中为 PV 创建的 EBS 卷不能简单地使用配置文件中的上下文条目在集群之间传输。这不是它设计的工作方式。

除了设计问题,还有一个严重的技术障碍。 EBS 卷是 ReadWriteOnce。这意味着它们一次只能连接到一个 pod。存在此约束的原因是因为 EBS 连接是块存储,它被视为连接到底层工作节点 运行 您的 pod 的物理块设备。该物理块设备在您的其他集群的工作节点上不存在。所以简单的把指针移过去是不可能的。

完成此操作的最佳方法是备份和复制磁盘。你如何处理这取决于你的团队。一种方法是挂载两个 EBS 卷并手动复制数据。您还可以拍摄快照并将数据恢复到另一个卷。