我为 2 个命名空间共享同一个集群:staging 和 production。两个命名空间之间的唯一区别是:
- 安装到某些 pod 的卷(显然,staging 和 production 之间的持久性分开!)
- 几个用于相对寻址的网址
- 几个用于复杂持久性的数据库 IP
我已设法按如下方式处理 (2) 和 (3),以便为所有 < em>ReplicationControllers:
- 使用命名空间本地的 ConfigMaps 来定义通过环境变量传递到 pod 的任何配置
- 使用 Services 和 Endpoints 来处理指向不同内部 IP 的 DNS 条目
但是,我无法找到令人满意的方法来获得 gcePersistentDisk 的 pdName 的引用em> - 我似乎无法使用 ConfigMap,因此有点难过。解决这个问题的适当方法是什么?最好的选择似乎是使用不同的字符串维护 2 个单独的 YAML 文件,但这有一种代码气味,因为它违反了 DRY。
此外,对我上面提到的其余设置的任何建设性评论都非常感谢:-)
最佳答案
您可能可以创建一个 PersistentVolumeClaim在每个命名空间中。看看Can a PVC be bound to a specific PV?关于如何将 PersistentVolumes“预绑定(bind)”到 PersistentVolumeClaims。
可能不是一个理想的解决方案,但它可能在 PVC 支持标签选择器之前有效。
关于docker - Kubernetes 上的暂存和生产,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37298546/