kubernetes - 向 GKE 上的部署公开数据库
问题描述
我有一个运行 pod 的部署,该 pod 需要访问我在与 kubernetes 集群相同的集群中运行的 postgres 数据库。如何创建一个服务来选择部署以便它可以访问。随着连接超时,我的 pod 不断重启。我在 vpc 子网中创建了防火墙规则以允许内部通信,并修改了 pg_hba.conf 和 postgresql.conf 我的部署定义如下:
apiVersion: apps/v1
kind: Deployment
metadata:
name: api
labels:
name: server
app: api
spec:
replicas: 3
selector:
matchLabels:
app: api
template:
metadata:
labels:
app: api
spec:
containers:
- name: api
image: gcr.io/api:v1
ports:
- containerPort: 80
env:
- name: DB_HOSTNAME
valueFrom:
secretKeyRef:
name: api-config
key: hostname
- name: DB_USERNAME
valueFrom:
secretKeyRef:
name: api-config
key: username
- name: DB_NAME
valueFrom:
secretKeyRef:
name: api-config
key: name
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: api-config
key: password
这是我公开数据库的服务定义,但我认为我没有选择部署。我已经按照这里的例子。
kind: Service
apiVersion: v1
metadata:
name: postgres
label:
spec:
type: ClusterIP
ports:
- port: 5432
targetPort: 5432
---
kind: Endpoints
apiVersion: v1
metadata:
name: postgres
subsets:
- addresses:
- ip: 10.0.0.50
ports:
- port: 5432
解决方案
您可以使用以下内容将数据库公开给 GKE 上的部署:
$ kubectl expose deployment name-of-db --type=LoadBalancer --port 80 --target-port 8080
推荐阅读
- php - 如何从 Laravel Homestead 连接到远程数据库?
- javascript - appendChild(相同的常量)多次?
- python - 在 Python 中合并/变形对象并保留旧引用
- centos - 奇怪的 CentOS 权限错误 [Errno 13] Permission denied: '/var/lib/ckan/ (no solution works)
- google-chrome-devtools - 这些是什么 No beacon, Next in ... 在 Chrome 开发者控制台中记录消息
- sql - SQL :对于每个 Col1 组,返回具有 Max(Col3) 的 Col2 值
- python - 如何根据 column1 的值将 1 个数据帧拆分为两个数据帧
- sharepoint - 在 PowerApps 上,每次我保存一个新项目时,表单上的项目都会切换到 Sharepoint 列表中的第一个项目
- split - OCaml - 从文件中读取并拆分字符
- java - 使用数据提供者时使用 Test-ng 优先级