0

我正在尝试在本地 k3d k8s 集群上部署两个应用程序。Service-A 公开了一个由 Service-B 使用的 REST 端点。这是配置:

服务-A

---
apiVersion: v1
kind: Service
metadata:
  labels:
    app.kubernetes.io/name: service-A
    app.kubernetes.io/version: 1.0.1-SNAPSHOT
  name: service-A
spec:
  ports:
  - name: http
    port: 8554
    targetPort: 8554
  selector:
    app.kubernetes.io/name: service-A
    app.kubernetes.io/version: 1.0.1-SNAPSHOT
  type: ClusterIP
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app.kubernetes.io/version: 1.0.1-SNAPSHOT
    app.kubernetes.io/name: service-A
  name: service-A
spec:
  replicas: 1
  selector:
    matchLabels:
      app.kubernetes.io/version: 1.0.1-SNAPSHOT
      app.kubernetes.io/name: service-A
  template:
    metadata:
      labels:
        app.kubernetes.io/version: 1.0.1-SNAPSHOT
        app.kubernetes.io/name: service-A
    spec:
      containers:
      - env:
        - name: KUBERNETES_NAMESPACE
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace
        image: registry.localhost:12345/service-A
        imagePullPolicy: IfNotPresent
        name: service-A
        ports:
        - containerPort: 8554
          name: http
          protocol: TCP

服务-B

---
apiVersion: v1
kind: Service
metadata:
  labels:
    app.kubernetes.io/name: service-B
    app.kubernetes.io/version: 1.0.1-SNAPSHOT
  name: service-B
spec:
  ports:
  - name: http
    port: 8550
    targetPort: 8550
  selector:
    app.kubernetes.io/name: service-B
    app.kubernetes.io/version: 1.0.1-SNAPSHOT
  type: LoadBalancer
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app.kubernetes.io/version: 1.0.1-SNAPSHOT
    app.kubernetes.io/name: service-B
  name: service-B
spec:
  replicas: 1
  selector:
    matchLabels:
      app.kubernetes.io/version: 1.0.1-SNAPSHOT
      app.kubernetes.io/name: service-B
  template:
    metadata:
      labels:
        app.kubernetes.io/version: 1.0.1-SNAPSHOT
        app.kubernetes.io/name: service-B
    spec:
      containers:
      - env:
        - name: KUBERNETES_NAMESPACE
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace
        - name: SERVICE_A_ADDR
          valueFrom:
            configMapKeyRef:
              key: service_a_addr
              name: app-configmap
        image: registry.localhost:12345/service-B-native
        imagePullPolicy: IfNotPresent
        name: service-B
        ports:
        - containerPort: 8550
          name: http
          protocol: TCP

配置图

apiVersion: v1
kind: ConfigMap
metadata:
  name: app-configmap
data:
  service_a_addr: service-A

如您所见,Service-B 需要一个 env 变量,其值是从包含 Service-A 名称的配置映射中读取的。

但是,当 Service-B 尝试调用 Service-A 时,我收到了 Connection denied 异常:

Caused by: javax.ws.rs.ProcessingException: RESTEASY004655: Unable to invoke request: org.apache.http.conn.HttpHostConnectException: Connect to localhost:8554 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused (Connection refused)
    at org.jboss.resteasy.client.jaxrs.engines.ManualClosingApacheHttpClient43Engine.invoke(ManualClosingApacheHttpClient43Engine.java:297)
    at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.invoke(ClientInvocation.java:491)
    at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientInvoker.invokeSync(ClientInvoker.java:152)
    at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientInvoker.invoke(ClientInvoker.java:115)
    at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientProxy.invoke(ClientProxy.java:76)
    at com.sun.proxy.$Proxy291.getLoginId(Unknown Source)
    at java.lang.reflect.Method.invoke(Method.java:566)
    at org.jboss.resteasy.microprofile.client.ProxyInvocationHandler.invoke(ProxyInvocationHandler.java:147)
    at com.sun.proxy.$Proxy292.getLoginId(Unknown Source)

对可能发生的事情有任何想法吗?Kubernetes YAML 文件已由 Java 框架 Quarks 自动生成。

4

1 回答 1

0

Connect to localhost:8554 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused (Connection refused)

它没有配置为连接到“service-A”,它被配置为连接到 localhost?此错误消息包含您的客户端连接到错误地址的线索。

于 2021-12-17T02:29:55.330 回答