Как сделать так, чтобы kubernetes pod имел доступ к PostgreSQL Pod - PullRequest
0 голосов
/ 30 апреля 2020

Я пробую местный Kubernetes (Docker -on-ma c), и пытаюсь представить искровую работу. Задание Spark соединяется с базой данных PostgreSQL и выполняет некоторые вычисления.

* * * * * * * * * * * * * * * * * * PostgreSQL работает на моем Kube и, поскольку я опубликовал его, я могу получить к нему доступ с хоста через localhost: 5432. Однако, когда приложение spark пытается подключиться к PostgreSQL, оно выдает

Exception in thread "main" org.postgresql.util.PSQLException: Connection to localhost:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.

kubectl cluster-info

Kubernetes master is running at https://kubernetes.docker.internal:6443
KubeDNS is running at https://kubernetes.docker.internal:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

kubectl get service postgresql -published

enter image description here

kubectl описать службу spark-store-1588217023181-driver-sv c

Name:              spark-store-1588217023181-driver-svc
Namespace:         default
Labels:            <none>
Annotations:       <none>
Selector:          spark-app-selector=spark-533ecb8556b6439eb938d487cc77c330,spark-role=driver
Type:              ClusterIP
IP:                None
Port:              driver-rpc-port  7078/TCP
TargetPort:        7078/TCP
Endpoints:         <none>
Port:              blockmanager  7079/TCP
TargetPort:        7079/TCP
Endpoints:         <none>
Session Affinity:  None

Как мне сделать свою работу на свечах, есть доступ к услуге PostgreSQL?

Ответы [ 2 ]

1 голос
/ 30 апреля 2020

localhost есть в EXTERNAL_IP, но система DNS кластера Kubernetes (CoreDNS) не знает, как разрешить ее в IP-адрес. EXTERNAL_IP предполагается разрешить внешним DNS-сервером, и обычно она предназначена для использоваться для подключения к Postgres извне кластера Kubernetes (т.е. из другой системы или из узлов Kubernetes), а не изнутри кластера (т.е. из другого модуля)

Postgres должен быть доступен из пакета pod через 10.106.15.112:5432 или postgresql-published:5432, потому что DNS-система кластера kubernetes знает, как ее решить.

Проверьте подключение Postgres

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> 
0 голосов
/ 07 мая 2020
NAME                  TYPE           CLUSTER-IP      EXTERNAL-IP   PORTS
postgresql-published  LoadBalancer   10.106.15.112   localhost     5432:31277

Означает, что услуга должна быть доступна внутри кластера на 10.106.15.112:5432, postgresql-published:5432 и внешне на localhost:31277.

Обратите внимание, что для Стручка localhost - это сам Стручок. В этом самом случае localhost выглядит неоднозначно. Однако так работает expose.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...