如何从kubernetes pod连接到本地网络
how to connect to local network from kubernetes pod
我在几个树莓派上设置了一个 k8s 集群用于本地开发。我正在尝试在本地网络中使用数据库 运行,但是我似乎无法让 pods 连接到数据库。我尝试使用服务和端点配置:
---
apiVersion: v1
kind: Service
metadata:
name: {{ .Values.database.host }}
annotations:
"helm.sh/hook-weight": "-2"
"helm.sh/hook": pre-install,pre-upgrade
"helm.sh/hook-delete-policy": before-hook-creation
spec:
clusterIP: None
ports:
- port: {{ .Values.database.port }}
---
apiVersion: v1
kind: Endpoints
metadata:
name: {{ .Values.database.host }}
annotations:
"helm.sh/hook-weight": "-2"
"helm.sh/hook": pre-install,pre-upgrade
"helm.sh/hook-delete-policy": before-hook-creation
subsets:
- addresses:
- ip: {{ .Values.database.ip }}
ports:
- port: {{ .Values.database.port }}
name: {{ .Values.database.host }}
我可以确认端点和服务资源已创建并且所有连接详细信息都正确,但我的应用程序(运行 在 k8s 集群上)仍然无法连接到主机网络上的数据库。仔细阅读 documentation 听起来这些资源是用于从本地网络连接到集群,而不是相反?有没有办法从 k8s 资源连接到本地网络上的服务?
运行kubectl get pods -n kube-system
的结果
local-path-provisioner-5ff76fc89d-txj6k 1/1 Running 4 65d
metrics-server-86cbb8457f-r8q6w 1/1 Running 3 65d
coredns-7448499f4d-5646n 1/1 Running 10 176d
csi-smb-node-9j5gm 3/3 Running 3291 150d
csi-smb-controller-6c696945f8-8t6qj 3/3 Running 27 150d
csi-smb-controller-6c696945f8-ck5hh 3/3 Running 3361 150d
csi-smb-node-822bb 3/3 Running 3260 150d
csi-smb-node-4nckf 3/3 Running 3655 150d
原来问题不是kubernetes问题,而是配置问题。我能够通过修改 postgres hba 配置文件以拥有更广泛的 ip 地址来解决我遇到的问题。正如@gohm'c 所提到的,有许多在线资源描述了如何修复我遇到的连接错误。感谢@gohm'c 在调试方面的帮助。
我在几个树莓派上设置了一个 k8s 集群用于本地开发。我正在尝试在本地网络中使用数据库 运行,但是我似乎无法让 pods 连接到数据库。我尝试使用服务和端点配置:
---
apiVersion: v1
kind: Service
metadata:
name: {{ .Values.database.host }}
annotations:
"helm.sh/hook-weight": "-2"
"helm.sh/hook": pre-install,pre-upgrade
"helm.sh/hook-delete-policy": before-hook-creation
spec:
clusterIP: None
ports:
- port: {{ .Values.database.port }}
---
apiVersion: v1
kind: Endpoints
metadata:
name: {{ .Values.database.host }}
annotations:
"helm.sh/hook-weight": "-2"
"helm.sh/hook": pre-install,pre-upgrade
"helm.sh/hook-delete-policy": before-hook-creation
subsets:
- addresses:
- ip: {{ .Values.database.ip }}
ports:
- port: {{ .Values.database.port }}
name: {{ .Values.database.host }}
我可以确认端点和服务资源已创建并且所有连接详细信息都正确,但我的应用程序(运行 在 k8s 集群上)仍然无法连接到主机网络上的数据库。仔细阅读 documentation 听起来这些资源是用于从本地网络连接到集群,而不是相反?有没有办法从 k8s 资源连接到本地网络上的服务?
运行kubectl get pods -n kube-system
local-path-provisioner-5ff76fc89d-txj6k 1/1 Running 4 65d
metrics-server-86cbb8457f-r8q6w 1/1 Running 3 65d
coredns-7448499f4d-5646n 1/1 Running 10 176d
csi-smb-node-9j5gm 3/3 Running 3291 150d
csi-smb-controller-6c696945f8-8t6qj 3/3 Running 27 150d
csi-smb-controller-6c696945f8-ck5hh 3/3 Running 3361 150d
csi-smb-node-822bb 3/3 Running 3260 150d
csi-smb-node-4nckf 3/3 Running 3655 150d
原来问题不是kubernetes问题,而是配置问题。我能够通过修改 postgres hba 配置文件以拥有更广泛的 ip 地址来解决我遇到的问题。正如@gohm'c 所提到的,有许多在线资源描述了如何修复我遇到的连接错误。感谢@gohm'c 在调试方面的帮助。