gpt4 book ai didi

redis - 在 Kubernetes 中多次部署相同的部署

转载 作者:可可西里 更新时间:2023-11-01 11:19:53 26 4
gpt4 key购买 nike

我打算在 Kubernetes 中部署依赖于 Redis 服务器的在线服务。到目前为止,我有:

kind: Deployment
apiVersion: extensions/v1beta1
metadata:
name: "redis"
spec:
replicas: 1
template:
metadata:
labels:
app: redis
spec:
containers:
- name: redis
image: redis
ports:
- containerPort: 6379
protocol: TCP

我还可以将 redis 作为服务公开:

apiVersion: v1
kind: Service
metadata:
name: redis
labels:
app: redis
spec:
ports:
- port: 6379
protocol: TCP
selector:
app: redis

有了这个,我可以使用 Redis 服务器运行单个 pod 并将其公开。

但是,我的应用程序需要联系多个 Redis 服务器(这可以配置,但理想情况下不应实时更改)。 它确实关心它与哪个 Redis 服务器通信,所以我不能只使用副本并将其公开为单个服务,因为服务抽象不允许我知道我也在与哪个实例通信。我知道我的应用程序需要了解这一点会阻碍可扩展性,因此我很高兴失去一些灵 active 。

我想多次部署相同的部署并为每次部署声明一个服务,但我在 Kubernetes 文档中找不到任何相关内容。我当然可以复制粘贴我的部署和服务 YAML 文件并为每个文件添加一个后缀,但这看起来很愚蠢而且太手动(坦率地说太复杂)。

Kubernetes 中有什么可以帮助我实现目标的吗?

最佳答案

你应该看看pet sets .宠物集将获得一个唯一但可确定的每个实例名称,如 redis0、redis1、redis2。它们也被视为宠物,而不是被视为牛的部署舱。

请注意,宠物套装通常更难升级、删除和处理,但这是获得可靠性和可确定性的代价。

您作为宠物的部署:

apiVersion: apps/v1alpha1
kind: PetSet
metadata:
name: redis
spec:
serviceName: "redis"
replicas: 3
template:
metadata:
labels:
app: redis
annotations:
pod.alpha.kubernetes.io/initialized: "true"
spec:
terminationGracePeriodSeconds: 0
containers:
- name: redis
image: redis
ports:
- containerPort: 6379
protocol: TCP

还可以考虑使用卷来更轻松地访问 pod 中的数据。

关于redis - 在 Kubernetes 中多次部署相同的部署,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40094541/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com