我有一个运行无限循环的python程序,但是,每隔一段时间,代码就会冻结。不会引发任何错误或任何其他会提醒我出现问题的消息。我想知道 Kubernetes 是否有任何活性探针可以帮助捕获代码何时冻结,以便它可以杀死并重新启动该容器。
我有一个想法,让 python 代码在每次完成循环时生成一个定期日志。这样,我可以让活性探针每隔 30 秒左右检查一次日志文件,以查看文件是否已更新。如果在分配的时间之后文件还没有更新,则假定程序冻结并且容器被杀死并重新启动。
我目前正在使用以下 python 代码进行测试:
#Libraries
import logging
import random as r
from time import sleep
#Global Veriables
FREEZE_TIME = 60
'''Starts an infinate loop that has a 10% chance of
freezing...........................................'''
def main():
#Create .log file to hold logged info.
logging.basicConfig(filename="freeze.log", level=logging.INFO)
#Start infinate loop
while True:
freeze = r.randint(1, 10) #10% chance of freezing.
sleep(2)
logging.info('Running infinate loop...')
print("Running infinate loop...")
#Simulate a freeze.
if freeze == 1:
print(f"Simulating freeze for {FREEZE_TIME} sec.")
sleep(FREEZE_TIME)
#Start code with main()
if __name__ == "__main__":
main()
如果有人能告诉我如何实现这个日志想法,或者如果有更好的方法来做到这一点,我将不胜感激!我目前正在 Docker-Desktop 上为 Windows 10 使用 Kubernetes,如果这有所作为的话。此外,我对此还很陌生,所以如果你能将你的答案保持在“Kubernetes for dummy”级别,我将不胜感激。