无法在 2 个节点之间通信,在 Istio 启用 GKE 集群中的 js 应用程序



我创建了一个GKE集群,并在其中部署了两个节点.js基本应用程序,名为nodeservice1nodeservice2,其中只有nodeservice1对世界开放(允许未经身份验证的调用=true(。

我的nodeservice1通过 restcall 在内部调用 nodeservice2,并返回nodeservice2返回的内容。

我能够通过 curl 命令调用nodeservice1,它工作正常。当我点击端点../restcall(实际上在内部调用nodeservice2(时,它只返回HTTPS 200 OK任何内容。

注意:这两个应用都处于"云运行"状态。以上设置

有什么帮助吗?蒂亚

我尝试从节点服务1点击以下URL。也尝试了 curl 命令: curl -v -H "Host: nodeservice1.istio-system.example.com" 34.80.18.249/restcall 其中 34.80.18.249 是我的 Istio 入口负载均衡器 IP。

  1. http://nodeservice2.istio-system:8080/restcall
  2. http://nodeservice2:8080/restcall

/restcall 调用内部 nodeservice2

当我检查正在运行的服务时,我的节点服务1和节点服务2的类型=外部名称。但是我已经暴露了nodeservice1=Loadbalancer和Nodeservice2=ClusterIP。是我缺少什么吗?

Nodeservice1 的服务器.js文件:

var express = require("express");
var http = require('http');
var app = express();
app.get('/',function(req, res, next){
res.send('Hurrah !!! nodeservice1 is up and running !!!');
});
app.get('/restcall',function(req, res, next){
var data = '';
console.log('inside /restcall in nodeservice1');
http.get('http://nodeservice1.default.example.com:8080/restcall',(resp) =>{
console.log('inside response');
resp.on('data', function (chunk) {
data += chunk;
console.log('inside end restcall');
});
resp.on('end', () => {
res.send(data);
console.log('inside end restcall');
console.log(data);
})
})
})
app.listen('8080',function(){
console.log('Node service 2 server listening on port 8080');
});

Nodeservice2的服务器.js

var express = require("express");
var http = require('http');
var app = express();
app.get('/',function(req, res){
res.send('Hurrah !!! nodeservice2 is up and running !!!');
});
app.get('/restcall',function(req, res, next){
console.log('inside /restcall in nodeservice2');
res.send('restcall api successfull from nodeservice2 !!!');
});
app.listen('8080',function(){
console.log('Node service 2 server listening on port 8080');
});

几周前我遇到了同样的问题。我认为问题是您的nodeservice1在内部找不到nodeservice2,我可能会建议尝试像nodeservice1.default.svc.cluster.local这样的东西。尝试Kubectl Get SVC列出您的服务。或者,如果您需要查看curl命令中发生的情况,请尝试使用curl标记-v。

相关内容

最新更新