from kubernetes import client, config, watch
from datetime import datetime
config.load_kube_config()
v1 = client.CoreV1Api()
w = watch.Watch()
for event in w.stream(v1.list_namespaced_pod, namespace="default", watch=False):
print("POD_NAME: " + event['object'].metadata.name) # print the name
print("TIME: " + str(datetime.now())) # print the time
print("PHASE: " + event['object'].status.phase) # print the status of the pod
print("CUSTOM AMAZING TEXT HERE!")
if (event['object'].status.phase == "Succeeded") and (event['type'] != "DELETED"): # do below when condition is met
print ("----> This pod succeeded, do something here!")
print("---")
字符串 这将产生类似于下面的输出:
POD_NAME: pi-pjmm5
TIME: 2020-09-06 15:28:01.541244
PHASE: Pending
CUSTOM AMAZING TEXT HERE!
---
POD_NAME: pi-pjmm5
TIME: 2020-09-06 15:28:03.894063
PHASE: Running
CUSTOM AMAZING TEXT HERE!
---
POD_NAME: pi-pjmm5
TIME: 2020-09-06 15:28:09.044219
PHASE: Succeeded
CUSTOM AMAZING TEXT HERE!
----> This pod succeeded, do something here!
---
3条答案
按热度按时间x6492ojm1#
让更多的可见性,以潜在的解决方案,在评论中张贴的问题,由原海报:
这是我发现到目前为止kubectl get pods --watch-only工作的地方。|while read line ; do echo -e“$(date +"%Y-%m-%d %H:%M:%S.%3N”)\t pods\t $line”; done
使用的命令:
解决方案是正确的,但需要从上述命令中进一步提取状态更改(
PENDING
,RUNNING
,SUCCEEDED/COMPLETED
)(假设进一步操作)。从另一个Angular 来看,你可以使用official Kubernetes API library来监控pod和job的状态,并根据它们采取相应的行动(例如:当job成功时做一些事情)。
我使用Kubernetes Python API库创建了一个example应用,用于查看Pod和作业的状态。
假设:
kubectl
的工作Kubernetes集群$ pip install kubernetes
个以
Job
为例:Pod示例
下面是Python 3中的示例代码,当pod的status设置为
Succeeded
时,它会监视pod并打印消息:字符串
这将产生类似于下面的输出:
型
作业示例
下面是Python 3中的示例代码,当作业状态设置为
Succeeded
时,它会监视作业并打印一条消息:型
这将产生类似于下面的输出:
型
ou6hu8tu2#
有
--timestamps
:字符串
cnjp1d6j3#
ts
(来自moreutils
)或gnomon
(来自npm i -g gnomon
)有助于标准时间戳输出:即:
ts
:gnomon
: