如何从Python进程登录到Kubernetes容器日志

如何从Python进程登录到Kubernetes容器日志,python,amazon-web-services,docker,kubernetes,amazon-eks,Python,Amazon Web Services,Docker,Kubernetes,Amazon Eks,使用运行Python脚本的Kubernetes容器: import time while True: try: for i in range(10): if i==0: raise Exception('Exception occurred!') except: pass time.sleep(1) 我想传递异常的消息“异常发生!”向下移动到容器,以便可以通过以下方式查看此错误消息:

使用运行Python脚本的Kubernetes容器:

import time
while True:
    try:
        for i in range(10):
            if i==0:
                raise Exception('Exception occurred!')
    except:
        pass
    time.sleep(1)
我想传递异常的消息
“异常发生!”向下移动到容器,以便可以通过以下方式查看此错误消息:

kubectl描述吊舱id

有可能吗?

您打印的任何内容(
都将在
kubectl日志中可见。(您可能需要在pod规范中设置环境变量
PYTHONUNBUFFERED=1

您编写的代码永远不会打印任何内容。构造

试试看:
...
除:
通过
静默忽略
try
块之外的任何和所有异常。裸
除外:
甚至捕获一些系统级异常,如
SystemExit
KeyboardInterrupt
;这几乎总是错误的。通常,您希望
块的作用域尽可能紧密,上的Python教程是一个有用的模式

(这方面的例外情况,特别是在Kubernetes上下文中,是您通常希望非常广泛的异常处理程序执行类似于向网络请求返回HTTP 500错误的操作,而不是使应用程序崩溃。)

更好的示例可能如下所示:

导入时间
第一类异常(异常):
通过
def迭代():
对于范围(10)内的i:
尝试:
如果i==1:
引发一个异常(“它是一个”)
打印(i,math.sqrt(i),math.sqrt(-i))
#将在i==0时工作,但在i==2时失败
除了一个例外,如e:
打印(一、报告(e))
#然后继续下一次迭代
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
尽管如此:
#顶层循环。我们想要一个非常广泛的捕获。
尝试:
迭代()
例外情况除外,如e:
打印('迭代失败',报告(e))
时间。睡眠(1)
您打印的任何内容(
都将在
kubectl日志中可见。(您可能需要在pod规范中设置环境变量
PYTHONUNBUFFERED=1

您编写的代码永远不会打印任何内容。构造

试试看:
...
除:
通过
静默忽略
try
块之外的任何和所有异常。裸
除外:
甚至捕获一些系统级异常,如
SystemExit
KeyboardInterrupt
;这几乎总是错误的。通常,您希望
块的作用域尽可能紧密,上的Python教程是一个有用的模式

(这方面的例外情况,特别是在Kubernetes上下文中,是您通常希望非常广泛的异常处理程序执行类似于向网络请求返回HTTP 500错误的操作,而不是使应用程序崩溃。)

更好的示例可能如下所示:

导入时间
第一类异常(异常):
通过
def迭代():
对于范围(10)内的i:
尝试:
如果i==1:
引发一个异常(“它是一个”)
打印(i,math.sqrt(i),math.sqrt(-i))
#将在i==0时工作,但在i==2时失败
除了一个例外,如e:
打印(一、报告(e))
#然后继续下一次迭代
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
尽管如此:
#顶层循环。我们想要一个非常广泛的捕获。
尝试:
迭代()
例外情况除外,如e:
打印('迭代失败',报告(e))
时间。睡眠(1)

您现在拥有的内容将在
kubectl日志中可见。
。如果希望它出现在
kubectl descripe pod…
的输出中,则需要编写它以将其创建为kubernetes事件。您现在拥有的内容将在
kubectl日志中可见。
。如果希望它出现在
kubectl descripe pod…
的输出中,则需要编写它以将其创建为kubernetes事件。