首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >除了通过入口将服务暴露在外部之外,还可以在k8s群集内部访问服务

除了通过入口将服务暴露在外部之外,还可以在k8s群集内部访问服务
EN

Stack Overflow用户
提问于 2018-12-08 07:33:11
回答 1查看 55关注 0票数 0

我已经配置了两个服务,都是NodePort

服务1

代码语言:javascript
运行
复制
kind: Service
apiVersion: v1
metadata:
  name: bitcoinrpc-dev-service
  namespace: dev
spec:
  selector:
    app: bitcoin-node
  ports:
  - name: bitcoin-mainnet
    protocol: TCP
    port: 80
    targetPort: 8332
  - name: bitcoin-testnet
    protocol: TCP
    port: 8080
    targetPort: 18332  
  type: NodePort

服务2

代码语言:javascript
运行
复制
kind: Service
apiVersion: v1
metadata:
  name: counterpartyrpc-dev-service
  namespace: dev
spec:
  selector:
    app: counterparty-node
  ports:
  - name: mainnet
    protocol: TCP
    port: 80
    targetPort: 4000
  - name: testnet
    protocol: TCP
    port: 8080
    targetPort: 14000  
  type: NodePort

我可以通过入口在集群外部访问这两个服务。但是,当我尝试从service2(counterparty)连接到service1(bitcoin时,它总是断开连接。我将该服务称为bitcoinrpc-dev-service.dev.svc.cluster.local:80

但是,如果我将此服务称为在ingress中配置的主机名,则连接会稳定得多。例如,当我用bitcoin.mydomain.com:80来引用service1

由于这意味着当需要相互通信的两个服务在同一群集中时,这将意味着在群集外部路由流量,因此似乎效率稍低。

我尝试将servicetype更改为clusterIP,但是无法通过入口访问它们。

正确的配置应该是什么?

EN

回答 1

Stack Overflow用户

发布于 2018-12-08 12:34:31

原因是只有安装了kube-dns插件的k8s集群才能将域名bitcoinrpc-dev-service.dev.svc.cluster.local:80转换为其对应的IP地址。

看看这个很棒的答案,它展示了围绕这个问题的解决方案:

How to access a service in a kubernetes cluster using the service name .

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53678067

复制
相关文章

相似问题

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