JDe*_*Dev 3 docker kubernetes kubectl kubernetes-helm
我正在尝试本地 Kubernetes(Docker-on-mac),并尝试提交 Spark 作业。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.
Run Code Online (Sandbox Code Playgroud)
kubectl 集群信息
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
Run Code Online (Sandbox Code Playgroud)
kubectl 获取服务 postgresql-published
kubectl描述服务spark-store-1588217023181-driver-svc
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
Run Code Online (Sandbox Code Playgroud)
我如何才能完成我的 Spark 工作,并访问 PostgreSQL 服务?
localhost存在,EXTERNAL_IP但 Kubernetes 集群 DNS 系统(CoreDNS)不知道如何将其解析为 IP 地址。EXTERNAL_IP应该由外部 DNS 服务器解析,通常用于从 Kubernetes 集群外部(即从另一个系统或从 Kubernetes 节点)连接到 Postgres,而不是从集群内部(即从另一个 pod)连接)
Postgres 应该可以通过10.106.15.112:5432或从 Spark pod 访问postgresql-published:5432,因为 kubernetes 集群 DNS 系统知道如何解析它。
测试 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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14762 次 |
| 最近记录: |