我正在使用Minikube在Kubernetes上运行Ruby应用程序。
但是,每当我查看日志时,都看不到本地运行应用程序时在终端上看到的输出。
我想是因为它只显示stderr吗?
如何查看所有类型的控制台日志(例如来自puts
或raise
的控制台日志?
在环顾四周时,这与它处于分离模式有关-请参阅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
答案 0 :(得分:1)
如本文中所示,kubectl logs pod apod
应该向您显示在迷你库中部署的Pod的stdout和stderr。
在Kubernetes中,默认情况下,Docker已配置为将容器的stdout和stderr写入主机系统上/ var / log / containers下的文件中
有两种类型的系统组件:在容器中运行的系统组件和不在容器中运行的系统组件。
例如:
- Kubernetes调度程序和kube-proxy在容器中运行。
- kubelet和容器运行时(例如Docker)不在容器中运行。
并且:
- 在具有systemd的计算机上,kubelet和容器运行时将写入日志。
- 如果不存在systemd,它们将写入
.log
目录中的/var/log
个文件。与容器日志类似,应该旋转/ var / log目录中的系统组件日志。
在kube-up.sh脚本启动的Kubernetes集群中,这些日志被配置为每天或一旦大小超过100MB时由logrotate工具进行轮换。
答案 1 :(得分:0)
我想是因为它只显示stderr吗?
并非如此,除非您的容器或pod规范中禁用了某些特定内容。我假设您使用的是Docker,因此默认设置为输出stdout and stderr,这就是您执行kubectl logs <pod-name>
如何查看所有类型的控制台日志(例如,来自推杆还是加注)?
您应该在容器日志中看到它们。这将有助于发布您的pod或部署定义。