使用kubectl获取pod日志小技巧

这篇具有很好参考价值的文章主要介绍了使用kubectl获取pod日志小技巧。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1. 前言

2. kubectl logs

3. 附官方命令解释


1. 前言

如何查看k8s中pod的console控制台日志?即类似于docker logs查看容器日志一样;可以使用 kubectl 命令,查看K8S中 Pod的日志。 在这里,将通过kubectl获取 Pod 的日志,包括当前运行、同一deployment下所有副本的日志。

2. kubectl logs

2.1 创建示例

创建nginx deployment,副本为2

 $ kubectl create deployment my-dep --image=nginx --replicas=2
 $ kubectl get pod 
NAME                      READY   STATUS    RESTARTS   AGE
my-dep-5b7868d854-8d5kf   1/1     Running   0          28m
my-dep-5b7868d854-q6lj7   1/1     Running   0          21m

2.2 获取单个pod日志

语法: kubectl logs <pod>

# 示例
$ kubectl logs my-dep-5b7868d854-8d5kf 
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
2022/07/26 01:18:56 [notice] 1#1: using the "epoll" event method

2.3 获取同一deployment下多个副本pod的日志

语法: kubectl logs -l <key>=<value>

# 示例
# 获取pod labels 
$ kubectl get pod --show-labels
NAME                      READY   STATUS    RESTARTS   AGE   LABELS
my-dep-5b7868d854-8d5kf   1/1     Running   0          33m   app=my-dep,pod-template-hash=5b7868d854
my-dep-5b7868d854-q6lj7   1/1     Running   0          26m   app=my-dep,pod-template-hash=5b7868d854

# 获取多个Pod日志
$ kubectl logs -l app=my-dep
/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
2022/07/26 01:18:56 [notice] 1#1: using the "epoll" event method
2022/07/26 01:18:56 [notice] 1#1: nginx/1.23.1
2022/07/26 01:18:56 [notice] 1#1: built by gcc 10.2.1 20210110 (Debian 10.2.1-6) 
2022/07/26 01:18:56 [notice] 1#1: OS: Linux 4.15.0-122-generic
2022/07/26 01:18:56 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576
2022/07/26 01:18:56 [notice] 1#1: start worker processes
2022/07/26 01:18:56 [notice] 1#1: start worker process 31
2022/07/26 01:18:56 [notice] 1#1: start worker process 32
/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
2022/07/26 01:25:33 [notice] 1#1: using the "epoll" event method
2022/07/26 01:25:33 [notice] 1#1: nginx/1.23.1
2022/07/26 01:25:33 [notice] 1#1: built by gcc 10.2.1 20210110 (Debian 10.2.1-6) 
2022/07/26 01:25:33 [notice] 1#1: OS: Linux 4.15.0-122-generic
2022/07/26 01:25:33 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576
2022/07/26 01:25:33 [notice] 1#1: start worker processes
2022/07/26 01:25:33 [notice] 1#1: start worker process 30
2022/07/26 01:25:33 [notice] 1#1: start worker process 31

2.4 获取pod最近xx行日志

语法:kubectl logs --tail=xx <pod>

# 获取pod最近5行日志
$ kubectl logs --tail=5 my-dep-5b7868d854-8d5kf 
2022/07/26 01:18:56 [notice] 1#1: OS: Linux 4.15.0-122-generic
2022/07/26 01:18:56 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576
2022/07/26 01:18:56 [notice] 1#1: start worker processes
2022/07/26 01:18:56 [notice] 1#1: start worker process 31
2022/07/26 01:18:56 [notice] 1#1: start worker process 32

2.5 获取最近一段时间的日志

语法:kubectl logs --since=1h/m <pod>

# 获取最近1分钟/小时的日志
$ kubectl logs my-dep-5b7868d854-8d5kf --since=1m
$ kubectl logs my-dep-5b7868d854-8d5kf --since=1h

/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
2022/07/26 01:18:56 [notice] 1#1: using the "epoll" event method
2022/07/26 01:18:56 [notice] 1#1: nginx/1.23.1
2022/07/26 01:18:56 [notice] 1#1: built by gcc 10.2.1 20210110 (Debian 10.2.1-6) 
2022/07/26 01:18:56 [notice] 1#1: OS: Linux 4.15.0-122-generic
2022/07/26 01:18:56 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576
2022/07/26 01:18:56 [notice] 1#1: start worker processes
2022/07/26 01:18:56 [notice] 1#1: start worker process 31
2022/07/26 01:18:56 [notice] 1#1: start worker process 32

2.6 kubectl logs --previous

获取上一个崩溃但还存在的pod的日志,说实在的,不是很懂,官方的解释是:--previous=false: If true, print the logs for the previous instance of the container in a pod if it exists. 意思是:上一个崩溃过,但还存在的实例的日志。暂无场景重现。略过

2.7 获取pod中指定或所有容器的日志

查看指定容器日志 语法:kubectl logs <pod> -c <contianer>

# 获取pod中容器名
$ kubectl get pods my-dep-5b7868d854-8d5kf -o jsonpath={.spec.containers[*].name}
nginx
# 获取指定容器日志
 kubectl logs my-dep-5b7868d854-8d5kf -c nginx

查看同一个Pod中所有容器日志 语法:kubectl logs <pod> --all-containers

$ kubectl logs my-dep-5b7868d854-8d5kf --all-containers 

2.8 持续获取Pod日志

语法:kubectl logs -f <pod>

$ kubectl logs -f my-dep-5b7868d854-8d5kf  

3. 附官方命令解释

kubectl logs --help

 -c, --container="": 容器名。
  -f, --follow[=false]: 指定是否持续输出日志。
      --interactive[=true]: 如果为true,当需要时提示用户进行输入。默认为true。
      --limit-bytes=0: 输出日志的最大字节数。默认无限制。
  -p, --previous[=false]: 如果为true,输出pod中曾经运行过,但目前已终止的容器的日志。
      --since=0: 仅返回相对时间范围,如5s、2m或3h,之内的日志。默认返回所有日志。只能同时使用since和since-time中的一种。
      --since-time="": 仅返回指定时间(RFC3339格式)之后的日志。默认返回所有日志。只能同时使用since和since-time中的一种。
      --tail=-1: 要显示的最新的日志条数。默认为-1,显示所有的日志。
      --timestamps[=false]: 在日志中包含时间戳。
      

觉得有用的点个关注和收藏吧~ 文章来源地址https://www.toymoban.com/news/detail-443188.html

到了这里,关于使用kubectl获取pod日志小技巧的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • docker安装部署rancher、rancher kubectl更新pod。

    虚拟机 VMWare【建议4G、4核】 操作系统 CentOS7 文章后面记录了部署过程出现的一系列问题,建议先对照问题配置下环境。 前期准备 1、关闭防火墙 2、 关闭selinux 3、关闭swap分区 4、 设置主机名 5、​​​​​​​ 在每个节点添加时间同步 6、 所有节点安装Docker 安装步骤 ranc

    2024年02月04日
    浏览(36)
  • k8s-kubectl命令详解、Pod创建过程、Pod的生命周期、定制Pod、资源对象文件

    kubectl是用于管理Kubernetes集群的命令行工具 kubectl [command] [TYPE] [NAME] [flags] command:子命令,如create,get,describe,delete type:资源类型,可以表示为单数,复数或缩写形式 name:资源的名称,如果省略,则显示所有资源信息 flags:指定可选标志,或附加的参数 子命令 说明 help

    2024年03月22日
    浏览(35)
  • K8S node节点执行kubectl get pods报错

    第一个问题是由第二个问题产生的,第二个问题也是最常见的 网上找的都是从master节点把文件复制过来,这样确实可以解决,但是麻烦,有一个node节点还好,如果有多个呢?每个都复制吗?下面是我从外网上找的解决方法 (错误二中) ,超实用,且方便 错误一: 这个错误基

    2024年04月15日
    浏览(37)
  • 《Git入门实践教程》前言+目录

    版本控制系统(VCS)在项目开发中异常重要,但和在校大学生的交流中知道,这个重要方向并未受到重视。具备这一技能,既是项目开发能力的体现,也可为各种面试加码。在学习体验后知道,Git多样化平台、多种操作方式、丰富的资源为业内人士提供了方便的同时,也造成

    2024年02月10日
    浏览(50)
  • FPGA学习实践之旅——前言及目录

    很早就有在博客中记录技术细节,分享一些自己体会的想法,拖着拖着也就到了现在。毕业至今已经半年有余,随着项目越来越深入,感觉可以慢慢进行总结工作了。趁着2024伊始,就先开个头吧,这篇博客暂时作为汇总篇,记录在这几个月以及之后从FPGA初学者到也算有一定

    2024年02月03日
    浏览(35)
  • Enable Kubectl logs/exec to debug pods on the edge

    确保可以找到 Kubernetes 的 ca.crt 和 ca.key 文件。如果您通过 kubeadm 设置您的 Kubernetes 集群,这些文件将位于 /etc/kubernetes/pki/ 目录中。 ls /etc/kubernetes/pki/ 设置 CLOUDCOREIPS 环境变量。该环境变量用于指定 cloudcore 的 IP 地址,或者是一个高可用集群的 VIP(虚拟IP)。 export CLOUDCOREIP

    2024年02月03日
    浏览(27)
  • 【云原生-k8s】kubectl top pod 报错:error: Metrics API not available

    🍁 博主简介   🏅云计算领域优质创作者   🏅华为云开发者社区专家博主   🏅阿里云开发者社区专家博主 💊 交流社区: 运维交流社区 欢迎大家的加入!

    2023年04月09日
    浏览(30)
  • 掌握 Kubernetes 故障排除技巧:kubectl命令的基本指南

    Kubernetes 彻底改变了容器编排,简化了应用程序的管理和扩展。然而,与任何复杂系统一样,Kubernetes 集群也会遇到问题,需要及时解决才能保持最佳性能和可靠性。 在本文中,我们将深入探讨必要的 kubectl 命令,这些命令是诊断和排除 Kubernetes 集群问题不可或缺的工具 。无

    2024年03月15日
    浏览(36)
  • kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version

    问题描述: 在使用命令进入pod内部时,提示命令格式在未来版本被弃用 问题解决: 新的进入pod内容的命令格式

    2024年02月11日
    浏览(26)
  • 掌握 GitHub Copilot:6个代码自动补全的必备技巧前言

    GitHub Copilot 是一款由人工智能驱动的编码助手,它能够根据上下文提供代码建议,极大地加快了开发过程。在之前介绍如何激活 Copilot 的文章之后,本文将深入探讨六个关键技巧,以高效利用 GitHub Copilot。 通过以下快捷键,可以更高效地使用 GitHub Copilot: **Tab:**接受建议。

    2024年04月16日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包