繁体   English   中英

登录Kubernetes Pod没有显示

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM