我有以下python
代码:
import time
import os
import signal
from abc import abstractmethod
class Stopper:
stop = False
@staticmethod
def safe_stop(*args):
Stopper.stop = true
signal.signal(signal.SIGINT, Stopper.safe_stop)
signal.signal(signal.SIGTERM, Stopper.safe_stop)
while not Stopper.stop:
print("Running...")
time.sleep(1)
os.system("touch /mnt/pod/sig")
print("Done")
我创建了一个包含上述Python代码的映像的部署。
当我使用kubectl delete-f sig删除部署时。yaml
my Python代码不会创建sig文件指示,也不会打印“完成”消息。
点击此链接:https://cloud.google.com/blog/products/containers-kubernetes/kubernetes-best-practices-terminating-with-grace我看到k8s发送SIGINT,SIGTERM信号,但在我的应用程序中什么都没有发生。
如何让k8s向我的应用程序发送信号?我做错了什么?
问题出在Python代码中。您需要调整类参数并使用Stopper。stop=True
(带大写的T
)。
以下代码适用于Python 3:
import time
import os
import signal
from abc import abstractmethod
class Stopper:
stop = False
@abstractmethod
def safe_stop(self, args):
Stopper.stop = True
signal.signal(signal.SIGINT, Stopper.safe_stop)
signal.signal(signal.SIGTERM, Stopper.safe_stop)
while not Stopper.stop:
print("Running...")
time.sleep(1)
os.system("touch /mnt/pod/sig")
print("Done")
我正在尝试在Kubernetes集群(Azure AKS)中部署Flink作业。作业群集在启动后立即中止,但任务管理器运行正常。 docker镜像创建成功,没有任何异常。我可以运行docker镜像,也可以SSHdocker镜像。 我已经按照以下链接中提到的步骤: https://github.com/apache/flink/tree/release-1.9/flink-container/kub
我确实部署了单吊舱,自定义docker映像如下: 在开发过程中,我希望推送新的最新版本并更新部署。如果不明确定义标记/版本并为每个构建增加它,就找不到如何做到这一点,并且
我正在使用库伯内特斯HPA来扩展我的集群。我已经设置了目标CPU利用率为50%。它正在正确扩展。但是,当负载减少并且它扩展得如此之快时。我想设置一个冷却期。例如,即使CPU util低于50%,它也应该在终止节点之前等待60秒。 我查看了这篇文章,但它并不是说我可以更改HPA中的默认值,https://kubernetes.io/docs/concepts/workloads/pods/pod/i
我只是在本地mac上使用mini kube设置kubernetes。 创建了一个类型为NodePort的服务,并且能够使用url
我假设没有愚蠢的问题,所以这里有一个我找不到直接答案的问题。 现在的情况 我目前有一个运行1.15的Kubernetes集群。AKS上的x,通过Terraform部署和管理。AKS最近宣布Azure将在AKS上停用Kubernetes的1.15版本,我需要将集群升级到1.16或更高版本。现在,据我所知,直接在Azure中升级集群不会对集群的内容产生任何影响,即节点、豆荚、秘密和当前在那里的所有其他
在了解了可以传递给Java 8虚拟机以使其具有容器感知能力的参数(即-XX:UnlockExperimentalVMOptions-XX:UseCGroupMemoryLimitForHeap)之后,我试图将这些参数添加到我的Kubernetes部署中,用于Spring Boot服务。 在部署YAML文件的容器部分,我有以下内容: 在我的Dockerfile中,我有: 我似乎不明白为什么最大堆大小