Kubernetes:将pod STDOUT,STDERR和pod终止日志重定向到PVC文件

tri*_*jee 5 docker kubernetes kubernetes-pvc

我试图将一个pod的STDOUT和STDERR写入PVC安装位置的文件中.

以下是我部署的模板内容:


    "template": {
      "metadata": {
        "name": "python-stdout-app",
        "creationTimestamp": null,
        "labels": {
          "k8s-app": "python-stdout-app"
        }
      },
      "spec": {
        "volumes": [
          {
            "name": "task-pv-volume",
            "persistentVolumeClaim": {
              "claimName": "task-pv-claim"
            }
          }
        ],
        "containers": [
          {
            "name": "python-stdout-app",
            "image": "trideep/demo-stdout-app",
            "resources": {},
            "volumeMounts": [
              {
                "name": "task-pv-volume",
                "mountPath": "/usr/share"
              }
            ],
            "terminationMessagePath": "/usr/share/1fed8c03-bc30-4889-952e-46f4c19b6ac1.log",
            "terminationMessagePolicy": "File",
            "imagePullPolicy": "Always",
            "securityContext": {
              "privileged": false
            }
          }
        ],
        "restartPolicy": "Always",
        "terminationGracePeriodSeconds": 30,
        "dnsPolicy": "ClusterFirst",
        "securityContext": {},
        "schedulerName": "default-scheduler"
      }
    }
Run Code Online (Sandbox Code Playgroud)

我可以在pod中看到正在写入的文件.但是没有在装载的主机位置看到输出.

以下是执行命令

python demo_stdout.py >> /usr/share/1fed8c03-bc30-4889-952e-46f4c19b6ac1.log 2>&1
Run Code Online (Sandbox Code Playgroud)

我做的一件事是输出文件,"terminationMessagePath"与我想要的pod终止占用空间和同一文件中的stdout/stderr相同.

Dockerfile如下:

FROM python:2.7.15-alpine3.9

WORKDIR /usr/src/app

COPY . .

CMD ["sh", "-c", "tail -f /dev/null"]
Run Code Online (Sandbox Code Playgroud)

尝试以下方法:

python demo_stdout.py >> /usr/share/test.log 2>&1
Run Code Online (Sandbox Code Playgroud)

以上产生PVC登录.但需要将pod终止日志记录在同一个文件中.

有人可以帮我弄这个吗?

Sai*_*nti 0

tee 命令读取标准输入并将其写入标准输出和一个或多个文件##

  • cmd应该修改为 ,以便您的输出demo_stdout.py将被记录到/usr/share/test.log以及stdin and stdout

python demo_stdout.py | tee /usr/share/test.log