“库伯内特斯”;日志“;不显示在pod容器中运行的简单python程序的任何输出

“库伯内特斯”;日志“;不显示在pod容器中运行的简单python程序的任何输出,python,kubernetes,logging,Python,Kubernetes,Logging,我有一个非常简单的设置。 Kubernetes的My.yaml配置文件: apiVersion: batch/v1 kind: Job metadata: name: stdout-test spec: template: spec: priorityClassName: research-high containers: - name: container-stdout-test image: <here com

我有一个非常简单的设置。 Kubernetes的My.yaml配置文件:

apiVersion: batch/v1
kind: Job
metadata:
  name: stdout-test
spec:
  template:
    spec:
      priorityClassName: research-high
      containers:
        - name: container-stdout-test
          image: <here comes my secret image repo>
          imagePullPolicy: "IfNotPresent"
          resources:
            limits:
              nvidia.com/gpu: "1"
              cpu: "1"
              memory: "8Gi"
            requests:
              nvidia.com/gpu: "1"
              cpu: "1"
              memory: "4Gi"
          command: ["python3", "/workspace/main.py"]
          volumeMounts:
            - mountPath: /workspace 
              name: localdir 
      imagePullSecrets:
        - name: lsx-registry
      restartPolicy: "Never"
      volumes:
        - name: localdir
          cephfs:
            monitors:
              - <here come my secret monitors>
            user: <namespace>
            path: "/home/stud/nothelfer/stdout-test" 
            secretRef: 
              name: <my secret>
在kubernetes中启动和运行作业效果良好。我从
kubectl get pods
中获取此输出:

NAME                READY   STATUS    RESTARTS   AGE
stdout-test-hl6qs   1/1     Running   0          5s
但是我没有得到预期的输出0,1,2。。。使用
kubectl日志-f stdout-test-hl6qs
从标准输出。相反,我只是得到一个空白屏幕。控制台上没有打印输出。我希望得到我的简单python程序的输出。我已经尝试了
kubectl日志的所有可能的命令行参数
,但都没有让我在命令行中看到Python程序的输出。图像设置正确,Python程序在容器中运行良好,我已经检查了所有这些。有人能帮我吗

我的Dockerfile:

FROM pytorch/pytorch
RUN conda install matplotlib pandas numpy
RUN conda update --all

ENV PYTHONUNBUFFERED 1

RUN python -c "import torch, pandas, matplotlib"
ENV PYTHONUNBUFFERED=1

在Dockerfile中添加以下行:

FROM pytorch/pytorch
RUN conda install matplotlib pandas numpy
RUN conda update --all

ENV PYTHONUNBUFFERED 1

RUN python -c "import torch, pandas, matplotlib"
ENV PYTHONUNBUFFERED=1

经过多次尝试,我找到了如何查看标准输出的方法。在Kubernetes配置文件中,我必须将行
命令:[“python3”,“/workspace/main.py”]
替换为
命令:[“python3”,“-u”,“/workspace/main.py”]
,该命令将Python的输出配置为无缓冲。出于不完全清楚的原因,当我仅在Dockerfile中设置变量
ENV PYTHONUNBUFFERED=1
ENV PYTHONUNBUFFERED 1
时,它不起作用。我现在可以看到程序的输出,无论我是否在Dockerfile中指定了
ENV PYTHONUNBUFFERED=1
还是
ENV PYTHONUNBUFFERED 1


我尝试了
ENV PYTHONUNBUFFERED=1
ENV PYTHONUNBUFFERED 1
,但都没有看到任何输出。我用相应的Docker文件更新了我的问题。您没有在Docker映像中复制.py文件。
main.py
文件如何在kubernetes内部运行?我相信你需要这样的东西:
COPY/工作区
在您的Dockerfile中我正在使用Kubernetes。在Kuberentes的config.yaml中,我装载路径并设置start命令。我不是直接和docker合作。我可以确认程序正在容器中运行,这不是问题所在。