首页 > 解决方案 > 如何测试容器是否正在运行 postgres

问题描述

我刚刚在 AWS EKS 上部署了一个带有 Postgres 的 docker。

下面是描述在此处输入图像描述细节。

我如何访问或测试 postgres 是否正常工作。我尝试从工作节点通过 VPC 内的 post 访问这两个 IP。

 psql -h #IP -U #defaultuser -p 55432

下面是部署。

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: postgres
spec:
  replicas: 1
  template:
    metadata:
      labels:
    app: postgres
spec:
  containers:
    - name: postgres
      image: postgres:10.4
      imagePullPolicy: "IfNotPresent"
      ports:
        - containerPort: 55432
      # envFrom:
      #   - configMapRef:
      #       name: postgres-config
      volumeMounts:
        - mountPath: /var/lib/postgresql/data
          name: postgredb
  volumes:
    - name: postgredb
      persistentVolumeClaim:
        claimName: efs

令人惊讶的是,我能够连接到 psql 但在 5432 上。:( 不知道我做错了什么。我将 containerPort 作为 55432 传递

标签: kubernetesamazon-eks

解决方案


简而言之,您需要运行以下命令在 55432 端口上公开您的数据库。

kubectl expose deployment postgres --port=55432 --target-port=5432 --name internal-postgresql-svc

从现在开始,您可以使用服务名称作为主机名或通过其 ClusterIP 地址从集群内部通过端口 55432 连接到它:

kubectl get internal-postgresql-svc

您在部署清单文件中所做的,只是附加了有关容器使用的网络连接的附加信息,在误导性之间,因为您的容器仅公开 5432 端口(您可以在此处自行验证)。

您应该使用 Kubernetes Service - 抽象,它可以访问您的 POD,并在后台进行必要的端口映射。如果您想在 Kubernetes 集群之外公开您的 postgresql 数据库,

请检查不同的端口类型。


要测试 POD 容器内的进度是否运行良好:

kubectl run postgresql-postgresql-client --rm --tty -i --restart='Never' --namespace default --image bitnami/postgresql --env="PGPASSWORD=<HERE_YOUR_PASSWORD>" --command -- psql --host <HERE_HOSTNAME=SVC_OR_IP> -U <HERE_USERNAME> 

推荐阅读