无法2节点之间进行通信,在Istio JS应用启用GKE簇(Unable to communicat

2019-10-30 13:44发布

我创建了一个GKE集群和部署了两个基本的Node.js应用在它命名nodeservice1nodeservice2只有nodeservice1是开放的世界(允许未经身份验证的呼叫= TRUE)。

nodeservice1通过restcall内部调用nodeservice2和返回什么nodeservice2回报。

我能够通过curl命令来调用nodeservice1,它工作正常。 当我打端点../restcall (实际上调用nodeservice2内部),它不返回任何东西,但HTTPS 200 OK

注:这两个应用都是在“云上运行”。 上面的设置

任何帮助吗? TIA

我试图打从nodeservice1以下URL。 试图curl命令太:卷曲-v -H “主持人: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调用

当我检查正在运行的服务,我nodeservice1和nodeservice2有型= ExternalName。 但我已经暴露nodeservice1 =负载均衡和Nodeservice2 = ClusterIP。 是我丢失的东西?

Nodeservice1的server.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的server.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');
});

Answer 1:

我也面临着同样的问题,几个星期前。 我认为这个问题是你的nodeservice1找不到nodeservice2内部,我建议你可以试试nodeservice1.default.svc.cluster.local。 尝试kubectl GET SVC列出了你的服务。 或者如果你需要看到你的curl命令会发生什么尝试-v标志与卷曲。



文章来源: Unable to communicate between 2 node,js apps in Istio enabled GKE cluster