我的目标是拥有一组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
答案 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
编辑: