图表总是比最后的句子更好,所以这就是我想做的:
总结一下:
我为什么想要这样的架构?
是否可以自动化此类部署(例如使用 Helm)?是否有文档资源可以使这样的架构具有干净的动态主/从绑定/解除绑定?
最重要的是,这种架构对于我想做的事情来说是一个好主意吗?有没有其他方法可以这么快?
我记得我们之前在这里讨论过这个话题,不用担心在这里添加更多内容。
了解有关 Redis helm 图表的更多信息:https://github.com/bitnami/charts/tree/master/bitnami/redis#choose- Between-redis-helm-chart-and-redis-cluster-helm-chart
您还应该问我的申请将如何进行的问题 连接到同一节点上的 POD 而不使用 Redis 服务。
为此,您可以使用`环境变量并将它们公开给 application POD。
类似的东西:
env:
- name: HOST_IP
valueFrom:
fieldRef:
fieldPath: status.hostIP
它将为您提供运行 POD 的 Node IP 的值,然后您可以使用该 IP 连接到 DeamonSet(如果您正在运行 Redis 从机)。
是否可以自动化此类部署(例如使用 Helm)?
是的,您可以写下自己的 Helm 图表并部署生成的 YAML 清单。
最重要的是,这个架构对于我想要的东西来说是一个好主意吗? 做?有没有其他方法可以这么快?
如果您认为这是一个好主意,根据我的考虑,这可能会造成 $$$ 问题和更高的集群资源使用率。
如果您运行 200 个节点,每个节点都运行 Redis 从属节点怎么办?这可能会消耗每个节点上的资源并增加您的基础设施的成本。
或
如果您正在计划特定部署
您的上述建议也很好,但是,如果您打算使用 Redis 和 only Specific deployment,您也可以使用 sidecar 模式并使用配置将多个 Redis 连接在一起。
apiVersion: v1
kind: Service
metadata:
name: web
labels:
app: web
spec:
ports:
- port: 80
name: redis
targetPort: 5000
selector:
app: web
type: LoadBalancer
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: web
spec:
selector:
matchLabels:
app: web
replicas: 3
template:
metadata:
labels:
app: web
spec:
containers:
- name: redis
image: redis
ports:
- containerPort: 6379
name: redis
protocol: TCP
- name: web-app
image: web-app
env:
- name: "REDIS_HOST"
value: "localhost"