要在Kubernetes Cluster中部署我的应用程序,我有以下要求。我正在尝试提出一种类似于我的其他微服务部署并且不复杂的架构。
我正在考虑有多个副本将连接到同一卷(在我的情况下为NAS)。 postgres实例将位于诸如我的应用程序微服务之类的服务后面。应用程序将连接到该服务,并且不需要知道与哪个Postgres实例通信。这使我的体系结构大大简化,因为我不必担心设置Postgres复制。
此体系结构中的一个问题是,如果在收到写入请求后Postgres实例发生故障,数据将发生什么变化。我可以引入带有消费者确认的消息代理来处理这种情况,但这会带来一些性能影响。
下面显示了一个示例Postgres K8s部署配置。我将需要添加服务等。
该体系结构有哪些陷阱?有没有人实施过类似的东西?
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: postgres
spec:
replicas: 3
template:
metadata:
labels:
app: postgres
spec:
containers:
- name: postgres
image: postgres:latest
imagePullPolicy: "IfNotPresent"
ports:
- containerPort: 5432
envFrom:
- configMapRef:
name: postgres-config
volumeMounts:
- mountPath: /var/lib/postgresql/data
name: postgredb
volumes:
- name: postgredb
persistentVolumeClaim:
claimName: postgres-pv-claim
答案 0 :(得分:0)
对我来说还不是很清楚,但是听起来你正在谈论Shared Disk Failover
要回答您的问题,陷阱是:
我认为,为了获得可伸缩性而不仅仅是容错能力,您需要使用复制。
答案 1 :(得分:0)
您可以使用专为kubernetes扩展而设计的https://vitess.io/吗?