我已经配置了两个服务,都是NodePort。
服务1
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
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,但是无法通过入口访问它们。
正确的配置应该是什么?
发布于 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 .
https://stackoverflow.com/questions/53678067
复制相似问题