从kubernetes集群内部连接到Postgresql
我设置了一系列VM从kubernetes集群内部连接到Postgresql,postgresql,kubernetes,keycloak,vmware,Postgresql,Kubernetes,Keycloak,Vmware,我设置了一系列VM192.168.2.(100105101104),其中kubernetes master在100上,两个Worker在101104上。还可以在192.168.2.105上设置postgres,但仍然无法从内部访问。在minikube的一个测试虚拟机中尝试了它,minikube和postgres安装在同一个虚拟机中,效果很好 将postgers配置文件从localhost更改为*,将pg_hba.conf上的侦听更改为0.0.0/0 在VM中安装了postgesql-12和pos
192.168.2.(100105101104)
,其中kubernetes master在100
上,两个Worker在101104
上。还可以在192.168.2.105
上设置postgres,但仍然无法从内部访问。在minikube的一个测试虚拟机中尝试了它,minikube和postgres安装在同一个虚拟机中,效果很好
将postgers配置文件从localhost
更改为*
,将pg_hba.conf上的侦听更改为0.0.0/0
在VM中安装了postgesql-12和postgresql-client-12192.168.2.105:5432
,现在我向kubernetes添加了headless服务,如下所示
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
ports:
- protocol: TCP
port: 5432
targetPort: 5432
------
apiVersion: v1
kind: Endpoints
metadata:
name: my-service
subsets:
- addresses:
- ip: 192.168.2.105
ports:
- port: 5432
在我的部署中,我将定义它来访问数据库
apiVersion: v1
kind: Service
metadata:
name: keycloak
labels:
app: keycloak
spec:
ports:
- name: http
port: 8080
targetPort: 8080
selector:
app: keycloak
type: LoadBalancer
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: keycloak
namespace: default
labels:
app: keycloak
spec:
replicas: 1
selector:
matchLabels:
app: keycloak
template:
metadata:
labels:
app: keycloak
spec:
containers:
- name: keycloak
image: quay.io/keycloak/keycloak:11.0.0
env:
- name: KEYCLOAK_USER
value: "admin"
- name: KEYCLOAK_PASSWORD
value: "admin"
- name: PROXY_ADDRESS_FORWARDING
value: "true"
- name: DB_ADDR
value: 'my-service:5432'
- name: DB_DATABASE
value: postgres
- name: DB_PASSWORD
value: admin
- name: DB_SCHEMA
value: public
- name: DB_USER
value: postgres
- name: DB_VENDOR
value: POSTGRES
ports:
- name: http
containerPort: 8080
- name: https
containerPort: 8443
readinessProbe:
httpGet:
path: /auth/realms/master
port: 8080
虚拟机也是桥接的,而不是NAT
这里我做错了什么?我们要做的第一件事是创建带有自定义端点的无头服务。我的解决方案中的IP仅适用于我的机器 具有服务的终结点:
apiVersion: v1
kind: Service
metadata:
name: postgres-service
spec:
ports:
- protocol: TCP
port: 5432
targetPort: 5432
---
apiVersion: v1
kind: Endpoints
metadata:
name: postgres-service
subsets:
- addresses:
- ip: 192.168.2.105
ports:
- port: 5432
至于我的特定规范,我还没有定义任何入口或负载平衡器,因此在部署后,我将在服务中将选择器类型从负载平衡器更改为节点端口
现在,我部署了带有所提到的.yaml文件的KeyClope
apiVersion: v1
kind: Service
metadata:
name: keycloak
labels:
app: keycloak
spec:
ports:
- name: http
port: 8080
targetPort: 8080
- name: https
port: 8443
targetPort: 8443
selector:
app: keycloak
type: NodePort
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: keycloak
namespace: default
labels:
app: keycloak
spec:
replicas: 1
selector:
matchLabels:
app: keycloak
template:
metadata:
labels:
app: keycloak
spec:
containers:
- name: keycloak
image: quay.io/keycloak/keycloak:11.0.0
env:
- name: KEYCLOAK_USER
value: "admin" # TODO give username for master realm
- name: KEYCLOAK_PASSWORD
value: "admin" # TODO give password for master realm
- name: PROXY_ADDRESS_FORWARDING
value: "true"
- name: DB_ADDR
value: # <Node-IP>:<LoadBalancer-Port/ NodePort>
- name: DB_DATABASE
value: "keycloak" # Database to use
- name: DB_PASSWORD
value: "admin" # Database password
- name: DB_SCHEMA
value: public
- name: DB_USER
value: "postgres" # Database user
- name: DB_VENDOR
value: POSTGRES
ports:
- name: http
containerPort: 8080
- name: https
containerPort: 8443
readinessProbe:
httpGet:
path: /auth/realms/master
port: 8080
apiVersion:v1
种类:服务
元数据:
姓名:钥匙斗篷
标签:
应用程序:钥匙斗篷
规格:
端口:
-名称:http
端口:8080
目标港:8080
-名称:https
港口:8443
目标港:8443
选择器:
应用程序:钥匙斗篷
类型:节点端口
---
apiVersion:apps/v1
种类:部署
元数据:
姓名:钥匙斗篷
名称空间:默认值
标签:
应用程序:钥匙斗篷
规格:
副本:1份
选择器:
火柴标签:
应用程序:钥匙斗篷
模板:
元数据:
标签:
应用程序:钥匙斗篷
规格:
容器:
-姓名:钥匙斗篷
图片:quay.io/keydove/keydove:11.0.0
环境:
-姓名:keydape_用户
值:“admin”#TODO为主域提供用户名
-名称:keydape_密码
值:“admin”#TODO为主域提供密码
-名称:代理地址转发
价值:“真实”
-姓名:DB_ADDR
值:#:
-名称:数据库
值:“keydove”#要使用的数据库
-名称:DB_密码
值:“admin”#数据库密码
-名称:DB_模式
价值:公众
-姓名:DB_用户
值:“postgres”#数据库用户
-名称:DB_供应商
价值:博士后
端口:
-名称:http
集装箱港口:8080
-名称:https
集装箱港口:8443
readinessProbe:
httpGet:
路径:/auth/realms/master
端口:8080
在提到所有可能的值之后,它成功地连接到postgres服务器,该服务器位于远离kubernetes master和workers节点的另一台服务器上 请在问题中添加其他信息。描述postgres pod和svc。更新了有关pod、部署和服务的更多详细信息。您找到解决方法了吗?是的,实际问题是无头选择器正在投影到NodePortp:nodeport,因此,我想更改keydeport本身中的环境变量“-name:DB_ADDR value: