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

时间:2019-09-13 06:39:28

标签: node.js kubernetes

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

yarn.lock

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

消息:“读取ECONNRESET”

这是我的代码

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'

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

1 个答案:

答案 0 :(得分:0)

我发现我错过了一些东西,因此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"
   }
};