读取客户端go中kubernetes pod的日志时未找到资源

读取客户端go中kubernetes pod的日志时未找到资源,kubernetes,kubernetes-go-client,Kubernetes,Kubernetes Go Client,首先创建pod部署 if pod, err = clientset.CoreV1().Pods(namespace).Create(&v1.Pod{ TypeMeta: metav1.TypeMeta{ Kind: "Deployment", APIVersion: "apps/v1", }, ObjectMeta: metav1.ObjectMeta{ N

首先创建pod部署

if pod, err = clientset.CoreV1().Pods(namespace).Create(&v1.Pod{
        TypeMeta: metav1.TypeMeta{
            Kind:       "Deployment",
            APIVersion: "apps/v1",
        },
        ObjectMeta: metav1.ObjectMeta{
            Name:      "mithu",
            Namespace: namespace,
        },
        Spec: v1.PodSpec{
            Containers: []v1.Container{
                v1.Container{
                    Name:            "mithu",
                    Image:           "test-app",
                    ImagePullPolicy: "IfNotPresent",
                    Ports: []v1.ContainerPort{
                        v1.ContainerPort{
                            Name:          "local",
                            HostPort:      8081,
                            ContainerPort: 8081,
                            Protocol:      v1.ProtocolTCP,
                        },
                    },
                    Env: []v1.EnvVar{
                        v1.EnvVar{
                            Name:  "ASD",
                            Value: "",
                        },
                    },
                },
            },
            RestartPolicy: v1.RestartPolicyOnFailure,
        },
}); err == nil {
    fmt.Println("Pod created succesfuly with status", pod.Name)
} else {
    fmt.Println("Error1: ", err)
}

time.Sleep(5000)
现在吊舱已经部署好了,我正在读日志

req := clientset.RESTClient().Get().
    Namespace(namespace).
    Name(pod.Name).
    Resource("pods").
    SubResource("log").
    Param("follow", "").
    Param("container", "").
    Param("previous", "").
    Param("timestamps", "")

readCloser, err := req.Stream()
if err != nil {
    fmt.Println("Error2: ", err)
} else {
    buf := new(bytes.Buffer)
    _, err = io.Copy(buf, readCloser)
    fmt.Println("log : ", buf.String())
}
跟踪从中读取日志 Pod正在成功创建,但客户端似乎找不到获取错误的资源,因为
error 2:服务器找不到请求的资源(get pods.meta.k8s.io mithu)

如果我尝试从命令行获取日志,就不会有问题。我认为主要的问题是pods.meta.k8s.io和命令行args pods之间的问题这对我来说很有效:

req := clientset.CoreV1().Pods(namespace).GetLogs(
    pod.Name, 
    &v1.PodLogOptions{},
)

readCloser, err := req.Stream()
if err != nil {
        fmt.Println("Error2: ", err)
} else {
        buf := new(bytes.Buffer)
        _, err = io.Copy(buf, readCloser)
        fmt.Println("log : ", buf.String())
}