【发布时间】:2021-04-29 14:26:26
【问题描述】:
我在 kubernetes pod 上部署了 postgresql pod,想知道如何访问 postgresql gui。我无法通过入口路径访问它,因为我知道入口仅用于 https 目的,而 postgres 遵循 TCP 协议。任何线索我如何通过 GUI 访问?
deployment.yaml
---
apiVersion: "apps/v1"
kind: "Deployment"
metadata:
name: "postgresql-development"
namespace: "development"
spec:
selector:
matchLabels:
app: "postgresql-development"
replicas: 1
strategy:
type: "RollingUpdate"
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
minReadySeconds: 5
template:
metadata:
labels:
app: "postgresql-development"
tier: "mysql"
spec:
containers:
-
name: "postgresql-development"
image: "postgresql:12.6"
imagePullPolicy: "Always"
env:
-
name: "POSTGRES_USER"
value: "postgres"
ports:
-
containerPort: 5432
name: "postgres"
volumeMounts:
-
name: "postgresql-persistent-storage"
mountPath: "/var/lib/postgresql"
volumes:
-
name: "postgresql-persistent-storage"
persistentVolumeClaim:
claimName: "postgresql-pvc-development"
imagePullSecrets:
-
name: "postgresql"
service.yaml
---
apiVersion: "v1"
kind: "Service"
metadata:
name: "postgresql-development"
namespace: "development"
labels:
app: "postgresql-development"
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/part-of: ingress-nginx
spec:
ports:
-
port: 59799
targetPort: 5432
protocol: TCP
selector:
app: "postgresql-development"
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/part-of: ingress-nginx
tier: mysql
ingress.yaml
---
apiVersion: "networking.k8s.io/v1beta1"
kind: "Ingress"
metadata:
name: "postgresql-development-ingress"
namespace: "development"
annotations:
nginx.ingress.kubernetes.io/rewrite-target: "/$1"
spec:
rules:
-
host: "localhost"
http:
paths:
-
backend:
serviceName: "postgresql-development"
servicePort: 59799
path: "postgresql-development/(.*)"
【问题讨论】:
-
你会想要阅读
NodePort,或者如果你正在使用nginx-ingress 的tcp端口暴露,也可以使用它。根据这种需求的持久性,kubectl port-forward也很有效。另外,您还需要极其谨慎尝试将Deployment用于实际上是StatefulSet的东西
标签: postgresql kubernetes deployment