“库伯内特斯”;日志“;不显示在pod容器中运行的简单python程序的任何输出
我有一个非常简单的设置。 Kubernetes的My.yaml配置文件:“库伯内特斯”;日志“;不显示在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
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合作。我可以确认程序正在容器中运行,这不是问题所在。