首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么已经完成状态的荚仍然出现在kubctl中?

为什么已经完成状态的荚仍然出现在kubctl中?
EN

Stack Overflow用户
提问于 2018-07-08 17:20:03
回答 2查看 34.4K关注 0票数 23

我已经执行了"Kubernetes Up and Running“一书中的示例,其中运行了一个带有工作队列的pod,然后创建了一个k8s作业来消耗队列上的所有工作。我已经复制了下面的yaml api对象。

我的期望是,一旦一个k8s作业完成,它的豆荚就会被删除,但是kubectl get pods -o wide显示豆荚仍然存在,尽管它报告了0/1的容器,并且它们似乎仍然分配了ip地址--参见下面的输出。

  • 何时从kubectl get pods的输出中移除已完成的作业吊舱,为什么在完成所有容器后,这不是正确的?
  • 当豆荚像IP地址一样完成时,它们是否会消耗任何资源,或者信息是否被打印出来?

在所有的豆荚消耗完所有的消息之后,kubectl的输出。

代码语言:javascript
运行
复制
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调用,这些调用是从图书示例中剪切和粘贴的。

运行带有工作队列的吊舱

代码语言:javascript
运行
复制
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

将吊舱作为一项服务公开,以便工人吊舱能够到达。

代码语言:javascript
运行
复制
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个吊舱并行执行的作业,直到队列为空。

代码语言:javascript
运行
复制
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
EN

回答 2

Stack Overflow用户

发布于 2018-07-08 17:28:24

文档说得很好:

当作业完成时,将不再创建Pods,但也不会删除Pods。保持它们在附近,您仍然可以查看已完成的荚的日志,以检查错误、警告或其他诊断输出。作业对象在完成后也会保持不变,以便您可以查看其状态。在注意到旧作业的状态后,应由用户来删除它们。用kubectl删除作业(例如kubectl删除作业/pi或kubectl删除-f ./ job .jobs)。当您使用kubectl删除作业时,它创建的所有吊舱也将被删除。

票数 22
EN

Stack Overflow用户

发布于 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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51234378

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档