使用Kubernetes的postgres中的多个数据库?

时间:2017-10-09 09:05:18

标签: java postgresql kubernetes

我有四个java应用程序(构成一个大型Java应用程序),它们使用两个postgres服务器和大约8个不同的数据库(每个postgres服务器上有四个)。

既然我们要和kubernetes一起去,我不知道该怎么做会产生好结果?我能以一致的方式制作一个包含8个数据库的postgres副本吗?这在Kubernetes甚至可能吗?也许有更好的方法来处理这种情况?

TNX, 汤姆

1 个答案:

答案 0 :(得分:3)

如果您不需要2个不同服务器上的8个数据库(因为接近或其他),那么我会将所有8个数据库放在一个实例中。少管理一件事。

您可以在Kubernetes中的单个副本(或多个副本)中运行postgres数据库。在容器中运行数据库意味着您还需要设置持久存储,否则在容器停止时将丢失数据。

要在具有持久存储的Kubernetes中运行数据库,您需要创建deploymentpersistent volumepersistent volume claim。我在这个例子中使用NFS,但是还有很多其他存储选项可用。

postgres的-deployment.yml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: postgresdb-volume-claim
spec:
  storageClassName: postgresdb-class
  accessModes:
  - ReadWriteMany
  resources:
    requests:
      storage: 100Gi
status: {}

postgres的-pvolume.yml

kubectl create -f postgres-pvolume.yml 
kubectl create -f postgres-pvolume-claim.yml 
kubectl create -f postgres-deployment.yml

postgres的-pvolume-claim.yml

$(document).on('click', '.cost', function(event) {
    var total = 0;
    $('.cost:checked').each(function(){
        total += isNaN(parseInt($(this).val())) ? 0 : parseInt($(this).val());
    });
    $("#bedragen_selected").val(total);
});

然后,您可以使用以下命令将这些添加到Kubernetes集群中:

$(document).on('click', '.cost', function(event) {
    var total = 0;
    $('.cost:checked').each(function(){
        total += isNaN(parseFloat($(this).val())) ? 0 : parseFloat($(this).val());
    });
    $("#bedragen_selected").val(total);
});

但有一点谨慎。容器化世界中的持久存储仍处于起步阶段,并且在运行多个副本时在高流量环境中可能存在问题。如果您计划扩展数据库(即运行多个postgres副本),您应该在进行生产之前进行更深入的研究。网上有很多关于此的文章。

许多人仍然在VM或裸机上运行他们的数据库,并且只在容器中运行数据库以进行本地开发。