【问题标题】:How to access postgresql, deployed on Kubernetes cluster如何访问部署在 Kubernetes 集群上的 postgresql
【发布时间】: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


【解决方案1】:

Ingress API 仅适用于第 7 层 (HTTP)。在您的情况下,您想访问第 4 层 (TCP)。

为了实现您的目标,您可以:

【讨论】:

  • 更常见的 nginx 入口控制器also supports TCP and UDP,如果您希望将其包含在您的答案中
  • 可以,但不如 Traefik 简单
  • 我已经更新了我的问题中的 service.yaml 文件,请您检查它是否正确。还想知道访问 GUI 的 url 是什么?
  • 如果你使用nginx,你还需要创建一个具有正确映射的configmap。 stackoverflow.com/questions/53060092/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-02-21
  • 2021-12-29
  • 1970-01-01
  • 2021-02-02
  • 1970-01-01
  • 2019-10-01
  • 1970-01-01
相关资源
最近更新 更多