读取客户端go中kubernetes pod的日志时未找到资源
首先创建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
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())
}