繁体   English   中英

Node.js无法向K8S API服务器发出请求

[英]Node.js cannot make request to k8s api server

我正在尝试对k8s api服务器进行api调用以更新部署。 我可以在下面使用它来更新部署。

curl -X PATCH --header "Authorization: Bearer $TOKEN" --insecure -H 'Content-Type: application/strategic-merge-patch+json' --data '
{ "spec": { "template": { "spec": { "containers": [ { "name": "nlu","env": [ { "name": "LAST_UPDATE", "value": "123123" } ] } ] } } } }' \
    'https://10.1.0.4:6443/apis/apps/v1/namespaces/prod/deployments/nlu?fieldManager=strategic'

但是当我使用node.js请求模块发出请求时,出现如下错误

消息:“读取ECONNRESET”

这是我的代码

restart()
{
    const options = {
        url: "http://10.1.0.4:6443",
        body: JSON.stringify({ 
             "spec": { 
                 "template": { 
                     "spec": { 
                         "containers": [ 
                             { 
                                 "name": "nlu",
                                 "env": [ 
                                     { 
                                         "name": "LAST_UPDATE", 
                                         "value": "20190909" 
                                     } 
                                 ] 
                             } 
                         ] 
                     } 
                 } 
             } 
         }),
        auth: {
            'bearer': "mytoken"
       }
    };
    return new Promise(function(resolve,reject){
        request.patch(options, (err , res)=>{
            if(err)
            {
                reject(err)
            } else 
            {
                resolve('done')
            }
        })
    })
}

我该如何解决此问题,将不胜感激?

我发现我错过了一些东西,因此k8s服务器拒绝了我的请求。 首先,网址应以https而不是http开头。 其次,我应该在请求头中添加内容类型“ application / strategic-merge-patch + json”。 第三,我还必须在请求中添加rejectUnauthorized:false,以在无法验证服务器身份时忽略错误。

正确的请求应该像

const options = {
    url: "https://10.1.0.4:6443",
    headers: {
            "content-type": "application/strategic-merge-patch+json"
    },
    rejectUnauthorized: false,
    body: JSON.stringify({ 
         "spec": { 
             "template": { 
                 "spec": { 
                     "containers": [ 
                         { 
                             "name": "nlu",
                             "env": [ 
                                 { 
                                     "name": "LAST_UPDATE", 
                                     "value": "20190909" 
                                 } 
                             ] 
                         } 
                     ] 
                 } 
             } 
         } 
     }),
    auth: {
        'bearer': "mytoken"
   }
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM