How to get logs from kubernetes using golang?

前端 未结 4 1800
情话喂你
情话喂你 2020-12-17 00:59

I\'m looking for the solution of how to get logs from a pod in Kubernetes cluster using golang. I\'ve looked at \"https://github.com/kubernetes/client-go\" and \"https://god

4条回答
  •  情话喂你
    2020-12-17 01:28

    Here is what we came up with eventually using client-go library:

    func getPodLogs(pod corev1.Pod) string {
        podLogOpts := corev1.PodLogOptions{}
        config, err := rest.InClusterConfig()
        if err != nil {
            return "error in getting config"
        }
        // creates the clientset
        clientset, err := kubernetes.NewForConfig(config)
        if err != nil {
            return "error in getting access to K8S"
        }
        req := clientset.CoreV1().Pods(pod.Namespace).GetLogs(pod.Name, &podLogOpts)
        podLogs, err := req.Stream()
        if err != nil {
            return "error in opening stream"
        }
        defer podLogs.Close()
    
        buf := new(bytes.Buffer)
        _, err = io.Copy(buf, podLogs)
        if err != nil {
            return "error in copy information from podLogs to buf"
        }
        str := buf.String()
    
        return str
    }
    

    I hope it will help someone. Please share your thoughts or solutions of how you get logs from pods in Kubernetes.

提交回复
热议问题