SO I was just trying out kubernetes java client API :
String kubeConfigPath = System.getenv("HOME") + "/.kube/config";
ApiClient client =
ClientBuilder.kubeconfig(KubeConfig.loadKubeConfig(new FileReader(kubeConfigPath))).build();
Configuration.setDefaultApiClient(client);
CoreV1Api api = new CoreV1Api();
List<String> podNames = new ArrayList();
V1Pod selectedPod = null;
V1PodList list =
api.listPodForAllNamespaces(null, null, null, null, null, null, null, null, null, null);
System.out.println("/n/n===============Filtered Pods=======================");
for (V1Pod pod : list.getItems()) {//use stream instead
String podName = pod.getMetadata().getName();
if(podName.contains("pod1")) {
System.out.println(podName);
podNames.add(podName);
if(podName.contains("pod1-1223")) {
selectedPod = pod;
}
}
}
System.out.println("/n/n===============Selected Pod=====================/n/n");
//System.out.println(selectedPod);
System.out.println(selectedPod.getMetadata().getName());
System.out.println("========= Getting pod logs =====================");
PodLogs logs = new PodLogs();
InputStream is = logs.streamNamespacedPodLog(selectedPod);
Streams.copy(is, System.out);
A socket timeout exception is thrown when streaming the logs in System.out. So I guess the stream will be closed after getting the currently logged data? How can I overcome this to get continuous logs as in applications like Lens?
2023-02-25 05:00:52.508 INFO 6 --- [nio-8080-exec-5] PDFController : Triggering get entries by uuids: f6146522-bca0-41ce-83be-91b17255dd44,d9c22f92-3488-4d7c-8bc4-bfd2d287f605,a4839ae8-28b9-4b62-b80f-84d7415ab13e,128bf363-a9fe-4137-b2ad-e2d7f1801b56,9bce3c1e-5be6-4bb0-b0cf-d61bde5dad32,f4a70be3-30d5-41cf-83fa-fcf1b31fe854,f63fe1b8-858a-4fbb-bb2f-53e53a081d0d,38d20e21-9e31-48d8-b43d-5a37fe95570a,d6927476-8d97-4578-b5d8-cff32b2e1b47,c37840ef-21a3-470c-af50-434376d7fdec,b96ea9d1-97fb-473e-884f-91f8a35432ba for PDF
Exception in thread "main" java.net.SocketTimeoutException: timeout
at okio.Okio$4.newTimeoutException(Okio.java:232)
at okio.AsyncTimeout.exit(AsyncTimeout.java:286)
at okio.AsyncTimeout$2.read(AsyncTimeout.java:241)
at okio.RealBufferedSource.request(RealBufferedSource.java:72)
at okio.RealBufferedSource.require(RealBufferedSource.java:65)
at okio.RealBufferedSource.readHexadecimalUnsignedLong(RealBufferedSource.java:307)
at okhttp3.internal.http1.Http1ExchangeCodec$ChunkedSource.readChunkSize(Http1ExchangeCodec.java:492)
at okhttp3.internal.http1.Http1ExchangeCodec$ChunkedSource.read(Http1ExchangeCodec.java:471)
at okhttp3.internal.connection.Exchange$ResponseBodySource.read(Exchange.java:286)
at okio.RealBufferedSource$1.read(RealBufferedSource.java:447)
at java.base/java.io.InputStream.read(InputStream.java:205)
at client.java@11.0.0/io.kubernetes.client.util.Streams.copy(Streams.java:27)
at com.chainless.chainlesskube/com.chainless.chainlesskube.KubeConfigFileClientExample.<init>(KubeConfigFileClientExample.java:68)
at com.chainless.chainlesskube/com.chainless.chainlesskube.KubeConfigFileClientExample.main(KubeConfigFileClientExample.java:24)
Caused by: java.net.SocketTimeoutException: Read timed out
at java.base/java.net.SocketInputStream.socketRead0(Native Method)
at java.base/java.net.SocketInputStream.socketRead(SocketInputStream.java:115)
at java.base/java.net.SocketInputStream.read(SocketInputStream.java:168)
at java.base/java.net.SocketInputStream.read(SocketInputStream.java:140)
at java.base/sun.security.ssl.SSLSocketInputRecord.read(SSLSocketInputRecord.java:478)
at java.base/sun.security.ssl.SSLSocketInputRecord.readHeader(SSLSocketInputRecord.java:472)
at java.base/sun.security.ssl.SSLSocketInputRecord.bytesInCompletePacket(SSLSocketInputRecord.java:70)
at java.base/sun.security.ssl.SSLSocketImpl.readApplicationRecord(SSLSocketImpl.java:1374)
at java.base/sun.security.ssl.SSLSocketImpl$AppInputStream.read(SSLSocketImpl.java:985)
at okio.Okio$2.read(Okio.java:140)
at okio.AsyncTimeout$2.read(AsyncTimeout.java:237)
... 11 more