You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Go Client创建K6自定义资源?请求报404错误

解决Go Client创建K6自定义资源时的404错误

核心原因及修复步骤

1. 确认K6 CRD已正确安装到集群

首先检查集群中是否存在K6的自定义资源定义(CRD):

kubectl get crds | grep k6

如果没有输出,说明CRD未安装,需要先部署k6 operator对应的CRD(获取官方提供的CRD文件后,执行kubectl apply -f <CRD文件路径>完成安装)。

2. 修正API路径的复数形式错误

Kubernetes中CRD的API路径使用资源的复数名称,而非Kind的单数形式。从你的YAML示例来看,Kind是K6,对应的CRD定义中复数名称为k6s(可通过kubectl api-resources | grep k6查看NAME列确认)。

你当前的路径是单数的k6,需修改为复数:

// 原错误路径
AbsPath("/apis/k6.io/v1alpha1/namespaces/default/k6")
// 修改为正确的复数路径
AbsPath("/apis/k6.io/v1alpha1/namespaces/default/k6s")

3. 使用更规范的Typed Client替代手动REST调用

直接拼接REST路径容易出错,推荐使用client-go生成的Typed Client来操作CRD,示例代码如下:

import (
    k6v1alpha1 "<你的生成代码包路径>/k6.io/v1alpha1"
    metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    "context"
)

func createk6CR(k6Client k6v1alpha1.K6Interface) (string, error) {
    k6plugin := &k6v1alpha1.K6{
        TypeMeta: metav1.TypeMeta{
            APIVersion: "k6.io/v1alpha1",
            Kind:       "K6",
        },
        ObjectMeta: metav1.ObjectMeta{
            Name:      "k6-sample-1",
            Namespace: "default",
        },
        Spec: k6v1alpha1.K6Spec{
            Parallelism: 3,
            Script: k6v1alpha1.K6Script{
                ConfigMap: k6v1alpha1.K6Configmap{
                    Name: "staging-stress-test",
                    File: "staging.js",
                },
            },
        },
    }

    _, err := k6Client.Create(context.TODO(), k6plugin, metav1.CreateOptions{})
    if err != nil {
        return "", err
    }
    return "success", nil
}

注:需先借助code-generator工具或kubebuilder,针对k6的CRD生成对应的client-go代码。

4. 调试验证API路径

如果仍有疑问,可通过kubectl proxy暴露集群API,然后用curl查看可用的资源路径:

# 启动API代理
kubectl proxy
# 访问k6 API组的资源列表
curl http://localhost:8001/apis/k6.io/v1alpha1/namespaces/default/

返回结果中会列出该命名空间下k6 API组的所有可用资源,可直接确认复数资源名称。


内容的提问来源于stack exchange,提问作者shailesh gavathe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 15:06:17