首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hashicorp领事,无法在托管于minikube的服务之间进行通信。

Hashicorp领事,无法在托管于minikube的服务之间进行通信。
EN

Stack Overflow用户
提问于 2021-11-06 09:13:20
回答 1查看 83关注 0票数 0

我有两个apis (api1和api2)被配置并部署在minikube集群中。Api1想要和Api2沟通。我也已经配置了注释和意图。但是,什么也没起作用。

当我删除“connect”注释时,它工作得很完美(api-1可以与api-2通信)。不过,这不适用于领事注射。我可以在日志中看到它,在api-1连接到api-2时,过早地关闭了连接,但是如果我从postman单独触发这两个api,我就会得到响应。

我的领事配置文件配置

代码语言:javascript
复制
 global:
  name: consul
  datacenter: testcenter
  image: hashicorp/consul:1.10.3
  imageEnvoy: envoyproxy/envoy:v1.18.4
  metrics:
    enabled: true
    enableAgentMetrics: true
server:
  replicas: 1
ui:
  enabled: true
connectInject:
  enabled: true
  default: false
syncCatalog:
  enabled: false
controller:
  enabled: true
prometheus:
  enabled: false
grafana:
  enabled: false

API-1 Config

代码语言:javascript
复制
apiVersion: v1
kind: Service
metadata:
  name: order-service
spec:
  selector:
    app: order-service
  ports:
    - protocol: TCP
      port: 5000
      targetPort: 80
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: order-service
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: order-service
  labels:
    app: order-service
spec:
  replicas: 1
  selector:
    matchLabels:
      app: order-service
  template:
    metadata:
      labels:
        app: order-service
      annotations:
        'consul.hashicorp.com/connect-inject': 'true'        
        'consul.hashicorp.com/connect-service-upstreams': 'payment-service:5001'      
    spec:
      containers:
      - name: orderapi
        image: image/orderapi:1.4
        env:
        - name: PaymentBaseUrl
          value: "http://localhost:5001/"
        ports:
        - containerPort: 5000

API-2 Config

代码语言:javascript
复制
apiVersion: v1
kind: Service
metadata:
  name: payment-service
spec:
  selector:
    app: payment-service
  ports:
    - protocol: TCP
      port: 5001
      targetPort: 80      
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: payment-service
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: payment-service
  labels:
    app: payment-service
spec:
  replicas: 1
  selector:
    matchLabels:
      app: payment-service
  template:
    metadata:
      labels:
        app: payment-service
      annotations:
        'consul.hashicorp.com/connect-inject': 'true'               
    spec:
      containers:
      - name: paymentapi
        image: image/paymentapi:1.4
        ports:
        - containerPort: 5001
EN

回答 1

Stack Overflow用户

发布于 2022-01-01 21:36:42

服务对象中的targetPort似乎不正确。您的服务分别侦听端口5000和5001。但是,您的Service对象被配置为将在端口5000或5001上接收的通信转发到端口80--在该端口中,容器没有侦听。

您应该能够通过修改服务配置来指向应用程序侦听的正确端口来解决这个问题。

代码语言:javascript
复制
---
apiVersion: v1
kind: Service
metadata:
  name: order-service
spec:
  selector:
    app: order-service
  ports:
    - protocol: TCP
      port: 80
      targetPort: 5000
---
apiVersion: v1
kind: Service
metadata:
  name: payment-service
spec:
  selector:
    app: payment-service
  ports:
    - protocol: TCP
      port: 80
      targetPort: 5001
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69862717

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档