有没有办法将两个具有相同应用程序的容器连接到Kubernetes上的相同DB?

有没有办法将两个具有相同应用程序的容器连接到Kubernetes上的相同DB?,kubernetes,distributed-system,Kubernetes,Distributed System,我需要运行一个应用程序的两个“实例”,但它们应该访问相同的数据库,并且我需要它在我的Kubernetes集群上运行,这样我就可以为用户提供多AZ访问 有可能在库伯内特斯上实现吗?我需要有状态的电视机吗?更重要的是,是否可以使用Kubernetes管理DB pod 我需要运行一个应用程序的两个“实例”,但它们应该访问相同的数据库,并且我需要它在我的Kubernetes集群上运行,这样我就可以为用户提供多AZ访问 这实际上取决于你所说的实例。建议的方法是使用副本2创建部署,如下所示: apiVers

我需要运行一个应用程序的两个“实例”,但它们应该访问相同的数据库,并且我需要它在我的Kubernetes集群上运行,这样我就可以为用户提供多AZ访问

有可能在库伯内特斯上实现吗?我需要有状态的电视机吗?更重要的是,是否可以使用Kubernetes管理DB pod

我需要运行一个应用程序的两个“实例”,但它们应该访问相同的数据库,并且我需要它在我的Kubernetes集群上运行,这样我就可以为用户提供多AZ访问

这实际上取决于你所说的实例。建议的方法是使用
副本2创建部署,如下所示:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  labels:
    run: my_app
  name: my_app
spec:
  replicas: 2
  selector:
    matchLabels:
      run: my_app
  template:
    metadata:
      labels:
        run: my_app
    spec:
      containers:
      - image: my_app:version
        name: my_app
这将确保你有2个应用程序的“实例”

如果需要以不同的配置运行2个“实例”,则可以选择执行两个不同的部署,并更改其名称和标签:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  labels:
    run: my_app_1
  name: my_app_1
spec:
  replicas: 1
  selector:
    matchLabels:
      run: my_app_1
  template:
    metadata:
      labels:
        run: my_app_1
    spec:
      containers:
      - image: my_app:version
        name: my_app_1
将这两个实例连接到数据库相当容易,只需将数据库连接字符串作为配置选项传递给数据库即可。它可以生活在集群内部或外部

我需要有状态的电视机吗

只有当你的应用程序需要有可预测的名称,并且以某种方式存储状态时,你才需要statefulset

更重要的是,是否可以使用Kubernetes管理DB pod

完全可以在集群内运行数据库。这样做是否是个好主意取决于你

传统上,数据库在意外停机时不是很好。有了Kubernetes,数据库吊舱可能会随时移动,这可能会导致应用程序或数据库出现问题

您需要使用配置某种可重新连接的存储,但即使这样,也不能保证您的数据库会抵制Kubernetes重新启动它并重新启动数据库


有些数据库设计为在Kubernetes中更成功地运行,例如它可能会解决您的问题。

为了补充在Kubernetes中运行数据库的要点,查看任何