diff --git a/cfg_checker/common/kube_utils.py b/cfg_checker/common/kube_utils.py
index 6f303ff..195e791 100644
--- a/cfg_checker/common/kube_utils.py
+++ b/cfg_checker/common/kube_utils.py
@@ -1,3 +1,5 @@
+#    Author: Alex Savatieiev (osavatieiev@mirantis.com; a.savex@gmail.com)
+#    Copyright 2019-2022 Mirantis, Inc.
 """
 Module to handle interaction with Kube
 """
@@ -962,3 +964,68 @@
                 pod_object.metadata.namespace,
                 _svc
             )
+
+    def get_pod_logs(self, podname, ns):
+        # Params
+        # read log of the specified Pod # noqa: E501 This method makes a synchronous HTTP request by default. To make an asynchronous HTTP request, please pass async_req=True
+
+        # >>> thread = api.read_namespaced_pod_log(name, namespace,
+        #          async_req=True)
+        # >>> result = thread.get()
+        # :param async_req bool: execute request asynchronously
+        # :param str name: name of the Pod (required)
+        # :param str namespace: object name and auth scope, such as for teams
+        #           and projects (required)
+        # :param str container: The container for which to stream logs.
+        #            Defaults to only container if there is one container in
+        #            the pod.
+        # :param bool follow: Follow the log stream of the pod. Defaults to
+        #            false.
+        # :param bool insecure_skip_tls_verify_backend:
+        #            insecureSkipTLSVerifyBackend indicates that the apiserver
+        #            should not confirm the validity of the serving certificate
+        #            of the backend it is connecting to. This will make the
+        #            HTTPS connection between the apiserver and the backend
+        #            insecure. This means the apiserver cannot verify the log
+        #            data it is receiving came from the real kubelet. If the
+        #            kubelet is configured to verify the apiserver's TLS
+        #            credentials, it does not mean the connection to the real
+        #            kubelet is vulnerable to a man in the middle attack (e.g.
+        #            an attacker could not intercept the actual log data coming
+        #            from the real kubelet).
+        # :param int limit_bytes: If set, the number of bytes to read from the
+        #            server before terminating the log output. This may not
+        #            display a complete final line of logging, and may return
+        #            slightly more or slightly less than the specified limit.
+        # :param str pretty: If 'true', then the output is pretty printed.
+        # :param bool previous: Return previous terminated container logs.
+        #        Defaults to false.
+        # :param int since_seconds: A relative time in seconds before the
+        #        current time from which to show logs. If this value precedes
+        #        the time a pod was started, only logs since the pod start will
+        #        be returned. If this value is in the future, no logs will be
+        #        returned. Only one of sinceSeconds or sinceTime may be
+        #        specified.
+        # :param int tail_lines: If set, the number of lines from the end of
+        #        the logs to show. If not specified, logs are shown from the
+        #        creation of the container or sinceSeconds or sinceTime
+        # :param bool timestamps: If true, add an RFC3339 or RFC3339Nano
+        #        timestamp at the beginning of every line of log output.
+        #        Defaults to false.
+        # :param _preload_content: if False, the urllib3.HTTPResponse object
+        #        will be returned without reading/decoding response data.
+        #        Default is True.
+        # :param _request_timeout: timeout setting for this request. If one
+        #        number provided, it will be total request timeout. It can
+        #        also be a pair (tuple) of (connection, read) timeouts.
+        # :return: str
+        #        If the method is called asynchronously, returns the request
+        #        thread.
+
+        return self.CoreV1.read_namespaced_pod_log(
+            podname,
+            ns,
+            # timestamps=True,
+            tail_lines=50,
+            # pretty=True
+        )
