我有一个 kubernetes 集群,分布在 2 个区域 - zone1 和 zone2。
我有 2 个应用程序 - 一个 Web 应用程序和一个数据库。 Web 应用程序的配置存储在数据库中。应用程序和数据库都部署为有状态应用程序。
这个想法是为 Web 应用程序部署 2 个副本集(application-0 和 application-1),为数据库部署 2 个副本集(database-0 和 database-1)。 application-0 指向database-0,application-1 指向database-1。
Pod 反关联性已启用。因此,application-0 和 application-1 最好不要位于同一区域。另外,database-0 和database-1 不会位于同一区域。
我想确保 application-0 和 database-0 位于同一区域。 application-1 和database-1 位于另一个区域。这样 Web 应用程序的性能就不会受到影响。这可能吗?
最佳答案
如果您想严格分离两个区域的工作负载 - 我建议使用 nodeSelector在节点的区域上。
使用 Pod 亲和性也可以得到类似的结果,但它更复杂,并且要获得您所描述的清晰分割。您需要使用 requiredDuringScheduling/执行规则,除非您确实需要它们,否则通常最好避免使用它们。
关于performance - 在 Kubernetes 中并置 pod,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59007236/