我正在尝试在本地 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 自动生成。