gpt4 book ai didi

kubernetes - 运行有意定期退出的容器

转载 作者:行者123 更新时间:2023-12-02 12:15:15 24 4
gpt4 key购买 nike

我如何让Kubernates自动重启一个有意退出的容器以从环境变量中获取新数据?

我有一个在Kubernates集群上运行的容器,该容器以以下方式运行:

  • 容器启动,轮询工作
  • 如果收到任务,它将执行一些工作
  • 它再次轮询工作,直到...
  • ..容器已经运行了一段时间,此后退出而不是轮询以进行更多工作。

  • 它需要不断地重新启动,因为它使用由Kubernates secret 填充的环境变量,这些变量由另一个进程定期刷新。

    我已经尝试了一个Deployment,但是当我获得 CrashLoopBackOff状态时,它似乎不合适,这意味着该工作人员的调度频率越来越低。
    apiVersion: apps/v1
    kind: Deployment
    metadata:
    name: my-fonky-worker
    labels:
    app: my-fonky-worker

    spec:
    replicas: 2
    selector:
    matchLabels:
    app: my-fonky-worker
    template:
    metadata:
    labels:
    app: my-fonky-worker
    spec:
    containers:
    - name: my-fonky-worker-container
    image: my-fonky-worker:latest
    env:
    - name: NOTSOSECRETSTUFF
    value: cats_are_great
    - name: SECRETSTUFF
    valueFrom:
    secretKeyRef:
    name: secret-name
    key: secret-key

    我也尝试过CronJob,但这似乎有点hacky,因为这可能意味着容器在停止状态下停留了几秒钟。

    最佳答案

    正如@Josh所说,您需要使用退出并退出0 ,否则它将被视为失败的容器!这是reference。根据第一个示例,“Pod正在运行并且有一个Container。容器成功退出。”如果将 restartPolicy 设置为Always(顺便说一句是默认设置),则尽管Pod状态显示正在运行,容器仍将重新启动,但是如果您记录Pod,则可以看到容器的重新启动。

    It needs to be continually restarted, as it uses environment variables which are populated by Kubernates secrets which are periodically refreshed by another process.



    我将采取另一种方法。我将按照 here的说明安装配置映射,这将自动刷新已安装的配置映射数据 Ref。注意:请注意“kutlet中ConfigMaps缓存的 kubelet同步周期(默认情况下为1分钟)+ ttl(默认情况下为1分钟)”以管理Pod中configmap数据的刷新率。

    关于kubernetes - 运行有意定期退出的容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57575922/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com