如何为 Celery Worker Pod 设置活性和就绪探针

Dev*_*Dev 7 python django celery self-healing kubernetes

我想为 Celery 工作 Pod 设置活性和就绪探针。由于这些工作单元没有与其关联的特定端口,我发现这很困难。主 Django 应用程序 nginx 服务器更容易设置。

我对 k8s 很陌生,所以对不同的方法不太熟悉。

kja*_*jaw 7

livenessprobe for celeryworker:此命令仅在启用远程控制时有效。

$ celery inspect ping -d <worker_name> --timeout=<timeout_time>
Run Code Online (Sandbox Code Playgroud)

当 celery 工作线程使用单独池时,健康检查会等待任务完成。在这种情况下,您必须增加等待响应的超时时间。

所以在 yaml 中:

      livenessProbe:
        initialDelaySeconds: 45
        periodSeconds: 60
        timeoutSeconds: <timeout_time>
        exec:
          command:
          - "/bin/bash"
          - "-c"
          - "celery inspect ping -d <worker_name> | grep -q OK"
Run Code Online (Sandbox Code Playgroud)

当然,您必须将工作人员名称超时更改为您自己的值

  • 您可以将此命令添加为 https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#define-a-liveness-command (2认同)

ana*_*rxz 5

基本上,YAML 中用于 Celery 活性和就绪性探针的配置文件可以按照 Kubernetes文档中所述的通用方式进行设置。您可以根据您的要求专门针对 Celery pod 进行调整,例如

        livenessProbe:
          exec:
            # bash is needed to replace the environment variable
            command: [
              "bash",
              "-c",
              "celery inspect ping -A apps -d celery@$HOSTNAME"
            ]
          initialDelaySeconds: 30
          periodSeconds: 60  
          timeoutSeconds: 10 
Run Code Online (Sandbox Code Playgroud)

关于此问题仍然存在持续的 GitHub 问题 -此处描述了可能对您的设置有用的其他解决方案。