进程结束后,如何阻止Kubernetes吊舱重新启动

2024-10-03 00:30:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个python脚本,我用在Kubernetes上。 进程在python脚本上结束后,Kubernetes重新启动pod。我不想这样

我尝试从python脚本中添加一行代码,如下所示:

text = input("please a key for exiting")

我得到了EOF错误,所以它取决于容器在我的Kubernetes上没有EOF配置

在那之后,我尝试使用restartPolicy:Never。但是restartPolicy是不可能永远的,我得到这样的错误:

error validating data: ValidationError(Deployment.spec.template): unknown field \"restartPolicy\" in io.k8s.api.core.v1.PodTemplateSpec;

我怎么做这个?我只是不想重新启动这个吊舱。它可以是python脚本或Kubernetes yaml文件


Tags: key代码text脚本forinput进程错误
3条回答

你会得到unknown field \"restartPolicy\" in io.k8s.api.core.v1.PodTemplateSpec;,因为你很可能弄乱了一些缩进

下面是一个缩进restartPolicy字段不正确的部署示例:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80
    restartPolicy: Never   # <   -

这是一个缩进正确的展开图:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80
      restartPolicy: Never   # <   -

但这将导致错误:

kubectl  apply -f deploy.yaml
The Deployment "nginx-deployment" is invalid: spec.template.spec.restartPolicy: Unsupported value: "Never": supported values: "Always"

以下是原因的解释:restartpolicy-unsupported-value-never-supported-values-always


如果要运行一次性pod,请使用k8s job或直接使用pod:

apiVersion: v1
kind: Pod
metadata:
  labels:
    run: ngx
  name: ngx
spec:
  containers:
  - image: nginx
    name: ngx
  restartPolicy: Never

PodSpec有一个restartPolicy字段,其中可能包含值Always、OnFailure和Never。默认值始终为。 如果你只有一个容器,它应该可以工作

您有一个因异常而结束的进程,您需要更正该逻辑。 并可能导致失败。如果要调试代码,则需要捕获此错误并将其记录下来。这样您的进程就不会结束,或者您可以在新线程中运行此逻辑。这将是子线程,在主线程中,您可以有睡眠或等待条件

相关问题 更多 >