【问题标题】:Cannot connect to postgres pod in kubernetes无法连接到 kubernetes 中的 postgres pod
【发布时间】:2021-11-24 14:53:08
【问题描述】:

我使用 helm chart 在 Kubernetes 中安装 Postgresql。

我无法连接到我的应用服务器内的 Postgres。当我尝试连接到 db.服务器向我抛出有关 HostNotFoundError 的错误。

任何人都有在 Kubernetes 上安装数据库的经验。请帮帮我。

谢谢!

kubectl get pod

NAME                                                      READY   STATUS    RESTARTS   AGE
apollo-b47f886f-g9c8f                                     1/1     Running   0          2d19h
jupiter-7799cf84db-zfm9q                                  1/1     Running   0          5m23s
jupiter-migration-kkmqz                                   0/1     Error     0          3h22m
nginx-ingress-ingress-nginx-controller-55d6b7dc57-nn8q6   1/1     Running   0          20d
postgres-postgresql-0                                     1/1     Running   0          18h
kubectl get services

NAME                                               TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)                      AGE
apollo                                             ClusterIP      10.92.8.51     <none>          80/TCP                       20d
jupiter                                            ClusterIP      10.92.7.8      <none>          80/TCP                       2d14h
kubernetes                                         ClusterIP      10.92.0.1      <none>          443/TCP                      20d
nginx-ingress-ingress-nginx-controller             LoadBalancer   10.92.11.40    External IP   80:31096/TCP,443:31324/TCP   20d
nginx-ingress-ingress-nginx-controller-admission   ClusterIP      10.92.14.117   <none>          443/TCP                      20d
postgres-postgresql                                ClusterIP      10.92.3.97     <none>          5432/TCP                     18h
postgres-postgresql-headless                       ClusterIP      None           <none>          5432/TCP
sequelize config

module.exports = {
  production: {
    username: postgres,
    password: mypassword,
    database: jupiter,
    host: postgres-postgresql,
    dialect: 'postgres',
  },
};
Server logs

error HostNotFoundError [SequelizeHostNotFoundError]: getaddrinfo ENOTFOUND postgres-postgresql
    at Client._connectionCallback (/app/node_modules/sequelize/lib/dialects/postgres/connection-manager.js:175:24)
    at Client._handleErrorWhileConnecting (/app/node_modules/pg/lib/client.js:305:19)
    at Client._handleErrorEvent (/app/node_modules/pg/lib/client.js:315:19)
    at Connection.emit (node:events:394:28)
    at Socket.reportStreamError (/app/node_modules/pg/lib/connection.js:52:12)
    at Socket.emit (node:events:394:28)
    at emitErrorNT (node:internal/streams/destroy:157:8)
    at emitErrorCloseNT (node:internal/streams/destroy:122:3)
    at processTicksAndRejections (node:internal/process/task_queues:83:21) {
  parent: Error: getaddrinfo ENOTFOUND postgres-postgresql
06:02:30 0|jupiter  |
      at GetAddrInfoReqWrap.onlookup [as oncomplete] (node:dns:71:26) {
    errno: -3008,
    code: 'ENOTFOUND',
    syscall: 'getaddrinfo',
    hostname: 'postgres-postgresql\n'
  },
  original: Error: getaddrinfo ENOTFOUND postgres-postgresql
06:02:30 0|jupiter  |
      at GetAddrInfoReqWrap.onlookup [as oncomplete] (node:dns:71:26) {
    errno: -3008,
    code: 'ENOTFOUND',
    syscall: 'getaddrinfo',
    hostname: 'postgres-postgresql\n'
  }
}

【问题讨论】:

  • 在错误中,主机名是postgres-postgresql\n,这看起来很奇怪,因为主机名末尾有一个新行。我会检查那个配置。
  • @AndD 非常感谢!那是我的错误。我在我的配置中删除了一个新行。有效!!非常感谢。

标签: postgresql kubernetes sequelize.js kubernetes-helm


【解决方案1】:

如果@AndD 指出的内容被清除但仍然无效..

  1. 如果有问题,我会检查我在 kube-system 下的 coreDNS pod。

  2. 您也可以尝试使用 FQDN(完全限定域名)postgres-postgresql.[YOURNAMESPACE].svc.cluster.local

  3. postgres-postgresql 服务IP

  4. postgres-postgresql-0 以防万一 你的 svc 网络有问题

【讨论】:

  • 谢谢!正如AndD所说,我刚刚解决了我的问题。有效。 :D
猜你喜欢
  • 2021-05-19
  • 2021-03-01
  • 2018-09-03
  • 2021-09-10
  • 1970-01-01
  • 2020-09-01
  • 1970-01-01
  • 2019-03-12
  • 2015-06-06
相关资源
最近更新 更多