我已经执行了"Kubernetes Up and Running“一书中的示例,其中运行了一个带有工作队列的pod,然后创建了一个k8s作业来消耗队列上的所有工作。我已经复制了下面的yaml api对象。
我的期望是,一旦一个k8s作业完成,它的豆荚就会被删除,但是kubectl get pods -o wide显示豆荚仍然存在,尽管它报告了0/1的容器,并且它们似乎仍然分配了ip地址--参见下面的输出。
kubectl get pods的输出中移除已完成的作业吊舱,为什么在完成所有容器后,这不是正确的?在所有的豆荚消耗完所有的消息之后,kubectl的输出。
kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE
consumers-bws9f 0/1 Completed 0 6m 10.32.0.35 gke-cluster1-default-pool-3796b2ee-rtcr
consumers-d25cs 0/1 Completed 0 6m 10.32.0.33 gke-cluster1-default-pool-3796b2ee-rtcr
consumers-jcwr8 0/1 Completed 0 6m 10.32.2.26 gke-cluster1-default-pool-3796b2ee-tpml
consumers-l9rkf 0/1 Completed 0 6m 10.32.0.34 gke-cluster1-default-pool-3796b2ee-rtcr
consumers-mbd5c 0/1 Completed 0 6m 10.32.2.27 gke-cluster1-default-pool-3796b2ee-tpml
queue-wlf8v 1/1 Running 0 22m 10.32.0.32 gke-cluster1-default-pool-3796b2ee-rtcr执行了以下三个k8s api调用,这些调用是从图书示例中剪切和粘贴的。
运行带有工作队列的吊舱
apiVersion: extensions/v1beta1
kind: ReplicaSet
metadata:
labels:
app: work-queue
component: queue
chapter: jobs
name: queue
spec:
replicas: 1
template:
metadata:
labels:
app: work-queue
component: queue
chapter: jobs
spec:
containers:
- name: queue
image: "gcr.io/kuar-demo/kuard-amd64:1"
imagePullPolicy: Always将吊舱作为一项服务公开,以便工人吊舱能够到达。
apiVersion: v1
kind: Service
metadata:
labels:
app: work-queue
component: queue
chapter: jobs
name: queue
spec:
ports:
- port: 8080
protocol: TCP
targetPort: 8080
selector:
app: work-queue
component: queue将100个项发送到队列中,然后运行一个具有5个吊舱并行执行的作业,直到队列为空。
apiVersion: batch/v1
kind: Job
metadata:
labels:
app: message-queue
component: consumer
chapter: jobs
name: consumers
spec:
parallelism: 5
template:
metadata:
labels:
app: message-queue
component: consumer
chapter: jobs
spec:
containers:
- name: worker
image: "gcr.io/kuar-demo/kuard-amd64:1"
imagePullPolicy: Always
args:
- "--keygen-enable"
- "--keygen-exit-on-complete"
- "--keygen-memq-server=http://queue:8080/memq/server"
- "--keygen-memq-queue=keygen"
restartPolicy: OnFailure发布于 2018-07-08 17:28:24
文档说得很好:
当作业完成时,将不再创建Pods,但也不会删除Pods。保持它们在附近,您仍然可以查看已完成的荚的日志,以检查错误、警告或其他诊断输出。作业对象在完成后也会保持不变,以便您可以查看其状态。在注意到旧作业的状态后,应由用户来删除它们。用kubectl删除作业(例如kubectl删除作业/pi或kubectl删除-f ./ job .jobs)。当您使用kubectl删除作业时,它创建的所有吊舱也将被删除。
发布于 2020-03-17 10:36:06
它显示了完成的状态,当它实际终止时。如果您设置了restartPloicy:从不(当您不想再运行一次时),那么它就进入了这种状态。
终止:指示容器完成了的执行并停止运行。容器在成功完成执行或由于某种原因而失败时进入此状态。无论如何,都会显示原因和退出代码,以及容器的开始和结束时间。在容器进入终止之前,执行preStop钩子(如果有的话)。
..。状态:终止原因:完成出口代码:0已启动: Wed,2019年1月30日11:45:26 +0530完成: Wed,2019年1月30日11:45:26 +0530
https://stackoverflow.com/questions/51234378
复制相似问题