繁体   English   中英

Kubernetes-容器完成时Mark Pod完成

[英]Kubernetes - Mark Pod completed when container completes

假设我有一个包含2个容器的PodAppDatabase 我想运行一个Pod ,该PodApp中执行命令,然后终止。

我已经设置了我的App容器来运行该命令,然后它成功运行并终止,这很棒。 但是现在我的Database容器仍在运行,因此Pod未标记为complete

App容器完成后,如何将Pod标记为完成?

您可以调用Kubernetes API服务器来完成此操作。 考虑以下示例:

---
apiVersion: v1
kind: Pod
metadata:
  name: multi-container-completion
spec:
  containers:
    - name: long-running-process
      image: fbgrecojr/office-hours:so-47848488
      command: ["sleep", "1000"]
    - name: short-running-process
      image: fbgrecojr/office-hours:so-47848488
      command: ["sleep", "1"]
      lifecycle:
        preStop:
          exec:
            command: ["/pre-stop.sh"]

pre-stop.sh

#!/bin/bash
curl \
  -X DELETE \
  -H "Authorization: Bearer $(cat /var/run/secrets/kubernetes.io/serviceaccount/token)" \
  --cacert /var/run/secrets/kubernetes.io/serviceaccount/ca.crt \
  https://kubernetes.default.svc.cluster.local/api/v1/namespaces/$(cat /var/run/secrets/kubernetes.io/serviceaccount/namespace)/pods/$HOSTNAME

Dockerfilefbgrecojr/office-hours:so-47848488

FROM centos:latest
COPY pre-stop.sh /
RUN chmod +x /pre-stop.sh

注意:我无法正确测试它,因为preStop挂钩似乎不适用于我的本地Minikube设置。 如果这个问题不是我所本地化的,可以在此处跟踪相应的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM