首页 > 解决方案 > Kubernetes Javascript 客户端库适用于本地但不适用于 GKE

问题描述

我正在尝试使用 Kubernetes JS 客户端库,当我在本地环境中尝试它时(我使用 docker 运行本地 kubernetes)它工作正常,我正在创建一个用于测试目的的 pod,并且创建了 pod。当我尝试使用 Google Kubernetes Engine 时,我得到“ HttpError: HTTP request failed ”。

这是我使用图书馆的方式:

const kc = new k8s.KubeConfig();
kc.loadFromDefault();

const k8sApi = kc.makeApiClient(k8s.CoreV1Api);


然后我使用以下方法创建一个 pod,使用 V1Pod 主体:

k8sApi.createNamespacedPod("default", pod).then(
    (response) => {
        console.log(`Created pod -> ${response}`);
    },
    (err) => {
        console.log(`Error: ${err}`);
    }
);

标签: javascriptapihttpkubernetesgoogle-kubernetes-engine

解决方案


我不确定您是否解决了这个问题,但我通过使用 JSON.stringify(e) 获得了有关创建函数(即 api.createNamespacedCronJob(...))生成的错误的更多信息。如果您查看 k8s javascript 客户端的 github 存储库,则 HttpError 对象包含响应、正文和状态代码。这对我来说非常有帮助。由于用于请求的服务帐户的权限,这是一个 403 禁止。

Kubernetes Javascript 客户端 HttpError(产生该消息): https ://github.com/kubernetes-client/javascript/blob/ab5fc88afb4a205b1686078feca7e233f610c4f6/src/gen/api/apis.ts


推荐阅读