示例2:应用和缓存尽量部署在同一个域内
以一个三节点的集群为例。使用该集群运行一个带有内存缓存(例如 Redis)的 Web 应用程序。在此例中,还假设 Web 应用程序和内存缓存之间的延迟应尽可能低。 你可以使用 Pod 间的亲和性和反亲和性来尽可能地将该 Web 服务器与缓存并置。
在下面的 Redis 缓存 Deployment 示例中,副本上设置了标签 app=store。
podAntiAffinity 规则告诉调度器避免将多个带有 app=store 标签的副本部署到同一节点上。
因此,每个独立节点上会创建一个缓存实例。
$ kubectl get pod -l app=store -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
redis-cache-58c86d98f9-5mhgt 1/1 Running 0 16s 172.27.205.136 master <none> <none>
redis-cache-58c86d98f9-htdrr 1/1 Running 0 16s 172.29.55.21 node01 <none> <none>
下面的 Deployment 为 Web 服务器创建带有标签 app=web-store 的副本。
Pod 亲和性规则告诉调度器将每个副本放到存在标签为 app=store 的 Pod 的节点上。
Pod 反亲和性规则告诉调度器决不要在单个节点上放置多个 app=web-store 服务器。
$ kubectl get pod -l app=web-store -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
web-server-7fb4d747cc-bmmwk 1/1 Running 0 14s 172.27.205.137 master <none> <none>
web-server-7fb4d747cc-lrg8s 1/1 Running 0 14s 172.29.55.23 node01 <none> <none>
最后更新于
这有帮助吗?