Go语言 K8s客户端空指针取消引用

hc8w905p  于 2023-02-17  发布在  Go
关注(0)|答案(1)|浏览(109)

遵循k8s/controller-runtime/client示例代码(请参见此处),代码如下

var c client.Client

func main() {
    // Using a typed object.
    pod := &corev1.Pod{
        ObjectMeta: metav1.ObjectMeta{
            Namespace: "namespace",
            Name:      "name",
        },
        Spec: corev1.PodSpec{
            Containers: []corev1.Container{
                {
                    Image: "nginx",
                    Name:  "nginx",
                },
            },
        },
    }
    // c is a created client.
    _ = c.Create(context.Background(), pod) // nil deref here  
}

我在_ = c.Create(context.Background(), pod)上得到了一个nullptr解引用。对我来说这是有意义的,因为我声明了c,但是从来没有初始化过它。然而示例代码也做了这个。这里发生了什么?

col17t5w

col17t5w1#

初始化客户端的正确方法可在此处找到:https://pkg.go.dev/sigs.k8s.io/controller-runtime@v0.14.4/pkg/client#example-New

cl, err := client.New(config.GetConfigOrDie(), client.Options{})
if err != nil {
    fmt.Println("failed to create client")
    os.Exit(1)
}

相关问题