gpt4 book ai didi

mysql - kubernetes中的2个pod之间的MySQL连接失败

转载 作者:行者123 更新时间:2023-12-02 11:53:12 24 4
gpt4 key购买 nike

我是Kubernetes上的新手,并尝试生成2个Pod,包括前端应用程序和后端mysql。首先,我制作一个包含以下应用程序和mysql服务器的yaml文件,

apiVersion: v1
kind: Pod
metadata:
name: blog-system
spec:
containers:
- name: blog-app
image: blog-app:latest
imagePullPolicy: Never
ports:
- containerPort: 8080
args: ["-t", "-i"]
link: blog-mysql
- name: blog-mysql
image: mysql:latest
env:
- name: MYSQL_ROOT_PASSWORD
value: password
- name: MYSQL_PASSWORD
value: password
- name: MYSQL_DATABASE
value: test
ports:
- containerPort: 3306

前端应用程序的mysql jdbc url是 jdbc:mysql://localhost:3306/test。 pods 生成成功。应用程序和mysql连接正确。这次我将应用程序pod和mysql pod分别分成2个yaml文件。

== pod-app.yaml
apiVersion: v1
kind: Pod
metadata:
name: blog-app
spec:
selector:
app: blog-mysql
containers:
- name: blog-app
image: app:latest
imagePullPolicy: Never
ports:
- containerPort: 8080
args: ["-t", "-i"]
link: blog-mysql

== pod-db.yaml
apiVersion: v1
kind: Pod
metadata:
name: blog-mysql
labels:
app: blog-mysql
spec:
containers:
- name: blog-mysql
image: mysql:latest
env:
- name: MYSQL_ROOT_PASSWORD
value: password
- name: MYSQL_PASSWORD
value: password
- name: MYSQL_DATABASE
value: test
ports:
- containerPort: 3306

但是前端应用程序无法连接到mysql pod。它将引发连接异常。恐怕mysql jdbc url有一些不正确的值或yaml值有不适当的值。希望有什么建议。

最佳答案

在工作情况下,由于同一个Pod有两个容器,因此它们可以使用localhost进行通话,但在第二种情况下,由于您有两个Pod,因此不能再使用localhost。在这种情况下,您需要在前端应用程序中使用mysql pod的pod IP。但是使用POD IP的问题在于它可能会更改。更好的方法是将mysql pod公开为service,并在前端应用程序中使用服务名称而不是IP。检查此guide

关于mysql - kubernetes中的2个pod之间的MySQL连接失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60525208/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com