完成程序后Docker容器没有退出

时间:2019-05-20 12:02:02

标签: java docker kubernetes google-kubernetes-engine container-image

我正在尝试将Java容器作为Kubernetes中的一次性工作来运行。我正在使用的基本图像是gcr.io/distroless/java。问题是有时程序完成后容器会永远运行。

这是Kubernetes作业配置:

apiVersion: batch/v1
kind: Job
metadata:
  namespace: default
  annotations:
    cluster-autoscaler.kubernetes.io/safe-to-evict: false
spec:
  template:
    spec:
      containers:
      - name: myapp
        image: gcr.io/my_company/image:test
        imagePullPolicy: Always
        resources:
          limits:
            memory: 3Gi
          requests:
            memory: 1Gi
      restartPolicy: Never
      terminationGracePeriodSeconds: 0
  backoffLimit: 0

这是我的Java代码的示例:

package com.mypackage.prod;

import *some packages*;

public class Main {
    /*Static resources*/

    public static void main(String[] args) {
        LOG.info("Starting");

        /*
        Doing some work and calling couple of functions!
        */

        LOG.info("Done with my work. Hitting System exit");
        System.exit(0);
    }
}

我还尝试使用gcr.io/distroless/java:debug,并通过docker attach检查了日志。程序完成后,我看到了最后一个日志语句,但Pod&Job仍然存在。作业处于运行状态时,Pod保持活动状态。

在具有以下主版本的Google Kubernetes Engine上运行:1.12.7-gke.10

然后我必须使用kubectl delete jobs $job-name --grace-period=0 --force

手动清理此类作业和容器

0 个答案:

没有答案
相关问题