【发布时间】:2021-07-16 23:46:45
【问题描述】:
我在 2 个 Rasberry Pi(Model 3 和 3B+)上创建了一个 Kubernetes 集群,用作 Kubernetes 游乐场。
我已经部署了一个 postgresql 和一个 spring boot 应用程序(称为 meal-planer)来玩。 Meal-Planer 应该从 postgresql 读取和写入数据。
但是,应用无法访问数据库。
这里是 postgresql 的部署描述符:
kind: Service
apiVersion: v1
metadata:
name: postgres
namespace: home
labels:
app: postgres
spec:
selector:
app: postgres
ports:
- port: 5432
targetPort: 5432
name: postgres
---
kind: Deployment
apiVersion: apps/v1
metadata:
name: postgres
namespace: home
spec:
replicas: 1
selector:
matchLabels:
app: postgres
template:
metadata:
labels:
app: postgres
spec:
containers:
- name: postgres
image: postgres:13.2
imagePullPolicy: IfNotPresent
env:
- name: POSTGRES_USER
valueFrom:
secretKeyRef:
name: dev-db-secret
key: username
- name: POSTGRES_PASSWORD
valueFrom:
secretKeyRef:
name: dev-db-secret
key: password
- name: POSTGRES_DB
value: home
ports:
- containerPort: 5432
volumeMounts:
- mountPath: /var/lib/postgresql/data
name: postgres-data
volumes:
- name: postgres-data
persistentVolumeClaim:
claimName: postgres-pv-claim
---
这里是餐盘的部署描述符
kind: Service
apiVersion: v1
metadata:
name: meal-planner
namespace: home
labels:
app: meal-planner
spec:
type: ClusterIP
selector:
app: meal-planner
ports:
- port: 8080
name: meal-planner
---
kind: Deployment
apiVersion: apps/v1
metadata:
name: meal-planner
namespace: home
spec:
replicas: 1
selector:
matchLabels:
app: meal-planner
template:
metadata:
labels:
app: meal-planner
spec:
containers:
- name: meal-planner
image: 08021986/meal-planner:v1
imagePullPolicy: Always
ports:
- containerPort: 8080
---
meal-planer 映像是运行 jar 文件的 arm32v7 映像。
在集群内部,meal-planer 使用连接字符串 jdbc:postgresql://postgres:5432/home 连接到数据库。
我绝对确定,数据库凭据是正确的,因为我可以在端口转发服务时访问数据库。
在部署这两个应用程序时,我可以kubectl exec -it <<podname>> -n home -- bin/sh 进入它。如果我从那里拨打wget -O- postgres 或wget -O- postgres.home,我总是会收到Connecting to postgres (postgres)|10.43.62.32|:80... failed: Network is unreachable。
我不知道,为什么网络无法访问,我不知道我能做些什么。
【问题讨论】:
-
为了帮助您找到根本原因,您能否包括以下内容:1)
kubectl logs <<postgres_pod_name>>2)kubectl exec -it <<postgres_pod_name>> -- sh -c 'exec pg_isready --host <<pod_ip>>3)kubectl exec -it <<postgres_pod_name>> -- cat /var/lib/postgresql/data/pg_hba.conf -
我关注了另一个SO question,有一句话让我觉得这与您尝试播放的图像不符 -
I tried using a busybox, but it behaves differently, pinging the db successfully.。我会去检查DNS troubleshooting
标签: kubernetes networking raspberry-pi arm