kubernetes crashloopbackoff仅在第二次重启之后

时间:2019-02-07 13:13:40

标签: kubernetes

我的目标是拥有一组autoscaled的Pod,定义如下,以处理动态Redis队列。当前,容器进程只是一个python脚本,该脚本从队列中获取下一个值,然后退出。

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: job

spec:
  selector:
    matchLabels:
      tier: job
  replicas: 1
  template:
    metadata:
      name: job
      labels:
        tier: job
    spec:
      containers:
      - name: job
        image: job
      terminationGracePeriodSeconds: 20

我很难理解重新启动的行为:这是一段时间内观看Pod的输出。

NAME                   READY STATUS         RESTARTS   AGE
job-6465767d94-vh667   0/1   Completed          0     13s
job-6465767d94-vh667   1/1   Running            1     16s
job-6465767d94-vh667   0/1   Completed          1     27s
job-6465767d94-vh667   0/1   CrashLoopBackOff   1     38s
job-6465767d94-vh667   1/1   Running            2     40s
job-6465767d94-vh667   0/1   Completed          2     50s
job-6465767d94-vh667   0/1   CrashLoopBackOff   2     63s

如您所见,它在首次运行后可以正常重启,然后在重新启动之前进入CrashLoopBackOff状态。这样做的问题是,重新启动Pod之前,每次“崩溃”内部计时器都会增加。

要运行它,我使用:

kubectl apply -f job.yaml
kubectl autoscale deployment job-wq-2 --min=3 --max=10 --cpu-percent=20

更多详细信息:

kubectl describe

enter image description here

1 个答案:

答案 0 :(得分:0)

我认为您要么重写脚本,所以它不会End,但会等待另一件事处理,或者使用Kind: Job

您可以遵循有关Jobs - Run to Completion的Kubernetes文档

apiVersion: batch/v1
kind: Job
metadata:
  name: pi
spec:
  template:
    spec:
      containers:
      - name: pi
        image: perl
        command: ["perl",  "-Mbignum=bpi", "-wle", "print bpi(2000)"]
      restartPolicy: Never
  backoffLimit: 4

编辑:

我假设您已经看过Fine Parallel Processing Using a Work Queue