[英]Logs in Kubernetes Pod not showing up
我让Kubernetes在pod中设置并运行grpc服务。 我成功地在服务端点击了一个端点,其中有一个print()语句,但我在日志文件中看不到任何日志。 我之前在Kubernetes中运行(cron)作业时看到过这种情况,日志只在作业完成后出现(而不是在作业运行时)。 有没有办法让kubernetes立即写入日志文件? 我可以放置的任何设置(群集级别还是仅用于pod)? 在此先感谢您的帮助!
找到了根本原因。 具体来说,发现它在Python应用程序在docker中运行分离时不会打印任何内容 。 解决方案是设置以下环境变量:PYTHONUNBUFFERED = 0。 这不是print语句没有显示,而是print语句被缓冲了。 执行上述操作将解决问题。
以下是K8S部署yaml的示例,因此您可以从上述答案中复制粘贴解决方案:
root@k8s:~/python_docker$ cat deployment.yml
apiVersion: apps/v1
kind: Deployment
metadata:
name: hpa
spec:
selector:
matchLabels:
app: hpa
template:
metadata:
labels:
app: hpa
spec:
containers:
- name: hpa
image: my-hpa/py
env:
- name: PYTHONUNBUFFERED
value: "0"
resources:
requests:
cpu: 100m
memory: 200Mi
一种可能性是容器缺乏CPU。 当我们在minikube上本地运行时,我们遇到了这个问题,并且我们在更大的集群中强制实施资源限制。 尝试突破您的pod上的CPU资源限制。 以下是yaml的示例。
如果你的CPU限制在20-40米左右,那么运行一个完整的flask / python应用程序可能太低了。 您可以尝试将其撞到接近100米。 它不会破坏你的本地机器。
apiVersion: apps/v1
kind: Deployment
metadata:
name: python-app
spec:
selector:
matchLabels:
app: python-app
template:
metadata:
labels:
app: python-app
spec:
containers:
- name: python-app
image: python-app
imagePullPolicy: Never
resources:
requests:
cpu: 40m
memory: 40Mi
limits:
cpu: 20m
memory: 20Mi
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.