【问题标题】:Kubernetes + Minikube - How to see all stdout output?Kubernetes + Minikube - 如何查看所有标准输出?
【发布时间】:2019-03-22 20:14:34
【问题描述】:

我正在使用 Minikube 在 Kubernetes 上运行一个 Ruby 应用程序。

但是,每当我查看日志时,我都看不到在本地运行应用程序时会在终端中看到的输出。

我猜是因为它只显示标准错误?

如何查看所有类型的控制台日志(例如来自putsraise)?

环顾四周是否与它处于分离模式有关 - 请参阅 Python 相关问题:Logs in Kubernetes Pod not showing up

谢谢。

=

根据要求 - 这是 deployment.yaml

apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: sample
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: sample
    spec:
      containers:
        - name: sample
          image: someregistry
          imagePullPolicy: Always
          command: ["/bin/sh","-c"]
          args: ["bundle exec rake sample:default --trace"]
          envFrom:
          - configMapRef:
              name: sample
          - secretRef:
              name: sample
          ports:
            - containerPort: 3000
      imagePullSecrets:
        - name: regsecret

【问题讨论】:

  • 在 openshift k8 上,oc logs -f my-service-1.0.1

标签: ruby kubernetes minikube


【解决方案1】:

如本文所示,kubectl logs pod apod 应该向您显示部署在 minikube 中的 pod 的 stdout 和 stderr。

默认情况下,在 Kubernetes 中,Docker 被配置为将容器的 stdout 和 stderr 写入主机系统上 /var/log/containers 下的文件

Kubernetes adds:

有两种类型的系统组件:在容器中运行的和不在容器中运行的。
例如:

  • Kubernetes 调度程序和 kube-proxy 在容器中运行。
  • kubelet 和容器运行时(例如 Docker)不在容器中运行。

还有:

  • 在装有 systemd 的机器上,kubelet 和容器运行时会写入 journald。
  • 如果 systemd 不存在,它们会写入/var/log 目录中的.log 文件。

与容器日志类似,/var/log 目录下的系统组件日志也应该轮换。
在 kube-up.sh 脚本启动的 Kubernetes 集群中,这些日志被配置为由 logrotate 工具每天轮换或在大小超过 100MB 时轮换。

【讨论】:

  • 我尝试了kubectl logs mypodname-7f74cb6f54-hr67v -n the-namespace,它显示了与 Minikube 中相同的日志,即不包括标准输出
  • @userMod2 是否有任何权限问题,如github.com/moby/moby/issues/19616#issuecomment-174492543?你可以试试 docker exec 来测试一下吗?
  • 没有权限问题。
  • @userMod2 kubectl describe pod aPod -n anamespace 会返回任何线索吗?
【解决方案2】:

我猜是因为它只显示标准错误?

并非如此,除非在您的容器或 pod 规范中禁用了某些特定功能。我假设您使用的是 Docker,因此默认输出 stdout and stderr,这就是您在执行 kubectl logs <pod-name> 时看到的内容

如何查看所有类型的控制台日志(例如来自 puts 或 raise)?

您应该在容器日志中看到它们。发布您的 pod 或部署定义会有所帮助。

【讨论】:

  • 在上面添加了deployment.yaml
  • 另外,当你说容器日志时——我认为 pod 日志是一样的?即kubectl logs mypodname-7f74cb6f54-hr67v -n my-namespace
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-02
相关资源
最近更新 更多