我有一个podjs中运行的nodejs代码。从Pod内部,我想找到运行此Pod的节点的区域。这样做的最好方法是什么?我需要额外的权限吗?

请您参考如下方法:

我无法找到一个库,但是我在下面发布了执行该操作的代码。从此post稍微修改了getContent函数。此代码应在GKE pod或GCE主机内运行。

使用它如下:

const gcp = require('./gcp.js') 
gcp.zone().then(z  => console.log('Zone is: ' + z)) 

模组:gcp.js
const getContent = function(lib, options) { 
  // return new pending promise 
  return new Promise((resolve, reject) => { 
    // select http or https module, depending on reqested url 
    const request = lib.get(options, (response) => { 
      // handle http errors 
      if (response.statusCode < 200 || response.statusCode > 299) { 
         reject(new Error('Failed to load page, status code: ' + response.statusCode)); 
       } 
      // temporary data holder 
      const body = []; 
      // on every content chunk, push it to the data array 
      response.on('data', (chunk) => body.push(chunk)); 
      // we are done, resolve promise with those joined chunks 
      response.on('end', () => resolve(body.join(''))); 
    }); 
    // handle connection errors of the request 
    request.on('error', (err) => reject(err)) 
    }) 
}; 
 
exports.zone = () => { 
    return getContent( 
        require('http'), 
        { 
            hostname: 'metadata.google.internal', 
            path: '/computeMetadata/v1/instance/zone', 
            headers: { 
                'Metadata-Flavor': 'Google' 
            }, 
            method: 'GET' 
        })  
} 


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!