我有四个java应用程序(构成一个大型Java应用程序),它们使用两个postgres服务器和大约8个不同的数据库(每个postgres服务器上有四个)。
既然我们要和kubernetes一起去,我不知道该怎么做会产生好结果?我能以一致的方式制作一个包含8个数据库的postgres副本吗?这在Kubernetes甚至可能吗?也许有更好的方法来处理这种情况?
TNX, 汤姆
答案 0 :(得分:3)
如果您不需要2个不同服务器上的8个数据库(因为接近或其他),那么我会将所有8个数据库放在一个实例中。少管理一件事。
您可以在Kubernetes中的单个副本(或多个副本)中运行postgres数据库。在容器中运行数据库意味着您还需要设置持久存储,否则在容器停止时将丢失数据。
要在具有持久存储的Kubernetes中运行数据库,您需要创建deployment,persistent volume和persistent volume claim。我在这个例子中使用NFS,但是还有很多其他存储选项可用。
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: postgresdb-volume-claim
spec:
storageClassName: postgresdb-class
accessModes:
- ReadWriteMany
resources:
requests:
storage: 100Gi
status: {}
kubectl create -f postgres-pvolume.yml
kubectl create -f postgres-pvolume-claim.yml
kubectl create -f postgres-deployment.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或裸机上运行他们的数据库,并且只在容器中运行数据库以进行本地开发。