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