【问题标题】:Move resources/volumes across contexts in Kubernetes clusters在 Kubernetes 集群中跨上下文移动资源/卷
【发布时间】:2020-07-03 08:55:52
【问题描述】:
我有一个 kubernetss 集群,我从上下文“dev1.k8s.local”开始,它有一个带有 EBS -PV(持久卷)的有状态集
现在我们计划开始另一个上下文“dev2.k8s.local”
有没有办法可以将 dev1 上下文 EBS 卷移动到上下文“dev2.k8s.local”
i am using K8S 1.10 & KOPS 1.10 Version
【问题讨论】:
标签:
kubernetes
kubernetes-pod
kops
persistent-volumes
persistent-volume-claims
【解决方案1】:
上下文只是 Kubernetes 配置的表示,通常是 ~/.kube/config。该文件中可以包含multiple configurations,可以手动管理或使用kubectl context 进行管理。
当您使用 Kops 在 AWS 上预置第二个 Kubernetes 集群时,会重新创建全新的资源,这些资源没有关于其他集群的参考框架。为原始集群中的 PV 创建的 EBS 卷不能简单地使用配置文件中的上下文条目在集群之间传输。这不是它的设计工作方式。
除了设计问题之外,还涉及一个严重的技术障碍。 EBS 卷为ReadWriteOnce。这意味着它们一次只能连接到一个 pod。存在此约束的原因是因为 EBS 连接是块存储,它被视为连接到运行您的 pod 的底层工作节点的物理块设备。该物理块设备在其他集群的工作程序节点上不存在。所以不可能简单地将指针移过去。
完成此操作的最佳方法是通过磁盘备份和复制。你如何处理这取决于你的团队。一种方法是安装两个 EBS 卷并手动复制数据。您还可以拍摄快照并将数据还原到另一个卷。