我的Web api无法连接到AKS中同一群集上的PostgreSQL数据库。我为postgres创建了一个ClusterIP,然后将来自该ClusterIP的IP地址用作数据库连接中的主机。我使用默认端口5432。
请注意,当我以前使用NodePort时,它正在工作。
这是PostgreSQL ClusterIP服务Yaml:
apiVersion: v1
kind: Service
metadata:
name: postgres-service
labels:
app: portal
spec:
type: ClusterIP
ports:
- port: 5432
selector:
app: portal
tier: postgres
下面是正在运行的服务。我将postgres-service的Cluster-IP用作Web ap中数据库连接字符串上的主机。
这是我的连接字符串的一部分:
"portal": "host=10.0.....;port=5432;
不确定这是怎么回事,但是Web api无法连接到数据库。下面是错误。
Cannot connect to database. Error: Npgsql.NpgsqlException (0x80004005): Exception while connecting\n ---> System.TimeoutException: The operation has timed out.\n at Npgsql.TaskExtensions.WithTimeout(Task task, NpgsqlTimeout timeout)\n at Npgsql.NpgsqlConnector.ConnectAsync(NpgsqlTimeout timeout, CancellationToken cancellationToken)\n at Npgsql.NpgsqlConnector.ConnectAsync(NpgsqlTimeout timeout, CancellationToken cancellationToken)\n at Npgsql.NpgsqlConnector.RawOpen(NpgsqlTimeout timeout, Boolean async, CancellationToken cancellationToken)\n at Npgsql.NpgsqlConnector.Open(NpgsqlTimeout timeout, Boolean async, CancellationToken cancellationToken)\n at Npgsql.NpgsqlConnection.<>c__DisplayClass32_0.<<Open>g__OpenLong|0>d.MoveNext()\n--- End of stack trace from previous location where exception was thrown ---\n at Npgsql.EntityFrameworkCore.PostgreSQL.Storage.Internal.NpgsqlDatabaseCreator.ExistsAsync(CancellationToken cancellationToken)\n at
以下是postgres服务的需求
Name: postgres-service
Namespace: default
Labels: app=portal
Annotations: <none>
Selector: app=portal,tier=postgres
Type: ClusterIP
IP: 10.0.xxx.xxx
Port: <unset> 5432/TCP
TargetPort: 5432/TCP
Endpoints: 10.xxx.xxx.xxx:5432
Session Affinity: None
Events: <none>
答案 0 :(得分:1)
我现在可以使其工作了。问题不是ClusterIP,而是我向AKS的API部署无法正常工作。
修复发布管道后,一切都会恢复正常。