Pod用于连接到同一集群中的Postgresql Pod的连接字符串?

问题描述 投票:0回答:1

我目前正在开发一个将在kubernetes容器中运行的应用程序。它应该连接到在同一集群中运行的postgressql pod。

但是由于某种原因我不能推断出连接字符串应该是什么

我现在这样定义postgressql部署:

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: 5432
          volumeMounts:
            - mountPath: /var/lib/postgresql/data
              name: postgredb
      volumes:
        - name: postgredb
          persistentVolumeClaim:
            claimName: postgres-pv-claim   

---
apiVersion: v1
kind: Service
metadata:
  name: postgres-service
  labels:
    app: postgres
spec:
  ports:
   - port: 5432
     targetPort: 5432 
  selector:
   app: postgres

但有连接字符串

            x.UseNpgsql("Host=postgres-service:5432;Database=postgres;Username=postgres;Password=postgres"));

似乎不起作用?

什么是连接字符串?

简单的事情

    Ping ping = new Ping();
    PingReply pingresult = ping.Send("postgres-service.default.svc.cluster.local:5432");
    if (pingresult.Status.ToString() == "Success")
    {
        Console.WriteLine("I can reach");
    }

在集群内部触发错误

    System.Net.NetworkInformation.PingException: An exception occurred during a Ping request.
 ---> System.Net.Internals.SocketExceptionFactory+ExtendedSocketException (00000005, 0xFFFDFFFF): Name or service not known
   at System.Net.Dns.InternalGetHostByName(String hostName)
   at System.Net.Dns.GetHostAddresses(String hostNameOrAddress)
   at System.Net.NetworkInformation.Ping.GetAddressAndSend(String hostNameOrAddress, Int32 timeout, Byte[] buffer, PingOptions options)
   --- End of inner exception stack trace ---
   at System.Net.NetworkInformation.Ping.GetAddressAndSend(String hostNameOrAddress, Int32 timeout, Byte[] buffer, PingOptions options)
   at System.Net.NetworkInformation.Ping.Send(String hostNameOrAddress, Int32 timeout, Byte[] buffer, PingOptions options)
   at System.Net.NetworkInformation.Ping.Send(String hostNameOrAddress)
   at API.Startup.Configure(IApplicationBuilder app, IWebHostEnvironment env, SchemaContext schemaContext) in /src/API/Startup.cs:line 42
   at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor, Boolean wrapExceptions)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at Microsoft.AspNetCore.Hosting.ConfigureBuilder.Invoke(Object instance, IApplicationBuilder builder)
   at Microsoft.AspNetCore.Hosting.ConfigureBuilder.<>c__DisplayClass4_0.b__0(IApplicationBuilder builder)
   at Microsoft.AspNetCore.Hosting.GenericWebHostBuilder.<>c__DisplayClass13_0.b__2(IApplicationBuilder app)
   at Microsoft.AspNetCore.Mvc.Filters.MiddlewareFilterBuilderStartupFilter.<>c__DisplayClass0_0.g__MiddlewareFilterBuilder|0(IApplicationBuilder builder)
   at Microsoft.AspNetCore.HostFilteringStartupFilter.<>c__DisplayClass0_0.b__0(IApplicationBuilder app)
   at Microsoft.AspNetCore.Hosting.GenericWebHostService.StartAsync(CancellationToken cancellationToken)
Unhandled exception. System.Net.NetworkInformation.PingException: An exception occurred during a Ping request.


kubectl get svc postgres-service
NAME               TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)    AGE
postgres-service   ClusterIP   10.106.91.9   <none>        5432/TCP   74m
postgresql kubernetes npgsql
1个回答
0
投票

tl; dr:postgres-service.default.svc

请参阅explanation in the docsdefault是您的名称空间名称,并且群集域部分可以省略。

© www.soinside.com 2019 - 2024. All rights reserved.