Kubernetes + Minikube-如何查看所有标准输出?

时间:2018-10-18 04:11:47

标签: ruby kubernetes minikube

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

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

我想是因为它只显示stderr吗?

如何查看所有类型的控制台日志(例如来自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

2 个答案:

答案 0 :(得分:1)

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

  

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

Kubernetes adds

  

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

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

并且:

  
      
  • 在具有systemd的计算机上,kubelet和容器运行时将写入日志。
  •   
  • 如果不存在systemd,它们将写入.log目录中的/var/log个文件。
  •   
     

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

https://d33wubrfki0l68.cloudfront.net/59b1aae2adcfe4f06270b99a2789012ed64bec1f/4d0ad/images/docs/user-guide/logging/logging-node-level.png

答案 1 :(得分:0)

  

我想是因为它只显示stderr吗?

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

时看到的内容
  

如何查看所有类型的控制台日志(例如,来自推杆还是加注)?

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