当前位置: 首页 > 知识库问答 >
问题:

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

丌官和泰
2023-03-14

首先创建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创建成功,但客户端似乎找不到资源,错误为错误2:服务器找不到请求的资源(getpods.meta.k8s.io mithu)

如果我尝试从命令行获取日志,就没有问题。我认为主要问题是pods.meta.k8s.io和命令行args之间的问题

共有1个答案

麻昌翰
2023-03-14

这对我很管用:

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())
}
 类似资料:
  • 问题内容: 我正在尝试解析一些日志文件,因为它们是用Go语言编写的,但是我不确定在不进行检查更改的情况下一次又一次地重新读取该文件的情况下,如何实现这一点。 我希望能够读到EOF,等到下一行写完后再读到EOF,依此类推。感觉有点像。 问题答案: 我已经编写了一个Go程序包github.com/hpcloud/tail来完成此任务。 … 引用kostix的答案: 在现实生活中,文件可能会被截断,替换

  • 问题内容: 我在JBOSS中有一个客户端服务器通信方案,并且在浏览器中作为客户端( JAVA PROGRAM )。最初在建立连接时,客户端将其证书发送到服务器。服务器从证书中提取客户端的公钥,因此通信将继续。 现在我的问题是 如何将证书(.cer)从客户端发送到服务器? 如何在服务器中接收证书并提取其公钥? 问题答案: 如何将证书(.cer)从客户端发送到服务器? 客户端证书(.cer,.crt,

  • 我们试图用任何google帐户登录我的worklight混合移动示例应用程序。 下面是创建google gmail API和创建OAuth 2.0客户端ID的屏幕截图步骤 错误日志中没有错误,只有这里引用的页面加载错误。我们得到这样的屏幕截图错误

  • 问题内容: kubernetes go客户端有很多方法,我找不到如何获得特定(或所有Pod)的当前CPU和RAM使用率的方法。 有人可以告诉我我需要调用什么方法才能获得Pod和节点的当前用法? 我的NodeList: Kubernetes Go客户端:https : //github.com/kubernetes/client-go 指标包:https : //github.com/kuberne

  • 本文向大家介绍nodejs实现日志读取、日志查找及日志刷新的方法分析,包括了nodejs实现日志读取、日志查找及日志刷新的方法分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了nodejs实现日志读取、日志查找及日志刷新的方法。分享给大家供大家参考,具体如下: 知识要点: JavaScript函数传参 JavaScript日期处理 JavaScript字符串操作 前端时间插件按需定制使用

  • 我从ElasticBeanstalk日志中得到的错误是: 无法解析为绝对文件路径,因为它不驻留在文件系统中:jar: file:/var/app/当前/application.jar!/BOOT-INF/classes!/keys/my-ssl.jks 我以这种方式请求文件: 我的申请书。属性看起来像: 我的项目结构如下所示: 注意:这可以在本地完美地工作,一旦部署到EB,就无法找到jks。