当前位置: 首页 > news >正文

k8s日志管理

k8s日志管理

    • k8s查看日志
      • 查看集群中不是完全运行状态的pod
      • 查看deployment日志
      • 查看service日志
      • 进入pod的容器内查看日志
    • 管理k8s组件日志
      • kubectl logs查看日志原理
    • 管理k8s应用日志
      • 收集k8s日志思路
      • 收集标准输出
      • 收集容器中日志文件
    • k8s查看节点状态失败
      • k8s部署prometheus监控

k8s查看日志

# 查看pod日志
kubectl logs po pod名 -n namespace名称

# 获取容器实例的 pod 日志(标准输出)
kubectl logs my-pod --previous

在这里插入图片描述

# 流式输出 Pod 的日志(标准输出)
kubectl logs po pod名 -n namespace名称 -f

在这里插入图片描述

# 获取含 name=myLabel 标签的 Pods 的日志(标准输出)
kubectl logs -l name=myLabel

# 流式输出含 name=myLabel 标签的 Pod 的所有日志(标准输出)
kubectl logs -f -l name=myLabel --all-containers

在这里插入图片描述


查看集群中不是完全运行状态的pod

# 列出 Kubernetes 集群中所有不是完全运行状态的 Pods 
## 1/1, 2/2, 3/3, 4/4, 5/5, 6/6: 这些通常表示 Pod 中的容器数量/期望的容器数量,比如 1/1 表示一个容器正在运行,并且只有一个容器是期望运行的,因此 Pod 状态是好的。
## Com: 这可能是用于匹配 "Completed" 状态的 Pods 的缩写。
## NAME: 可能用于排除输出中的表头行。
kubectl get pods -A -o wide |grep -vE "1/1|2/2|3/3|4/4|5/5|6/6|Com|NAME"

在这里插入图片描述


查看deployment日志

# 查看deployment日志
kubectl logs deploy deploy名称 -n namespace名称
kubectl logs -f deploy/my-deployment -n namespace名称

# 获取一个Deployment的Pod的日志(多容器例子)                        
kubectl logs deploy/my-deployment -c my-container
kubectl logs -f deploy/my-deployment -c my-container  

查看service日志

# 查看service日志
kubectl logs svc svc名称 -n namespace名称 
kubectl logs svc/服务名

进入pod的容器内查看日志

# 挂接到一个运行的容器中
kubectl attach my-pod -i

# 进入pod的终端内查看日志
kubectl exec -ti pod名称 -- bash

# 查看容器内主进程id
# 查看指定pid的输出
## 1 = stdout, 2 = stderr
tail  /proc/<pid>/fd/1

在这里插入图片描述

# 输出pod中容器的日志(stdout,pod中有多个容器的情况下使用)
# 获取 Pod 容器的日志(标准输出, 多容器场景)
kubectl logs my-pod -c 容器名

# 流式输出 Pod 容器的日志(标准输出, 多容器场景)
kubectl -f logs my-pod -c 容器名

管理k8s组件日志

k8s系统的组件日志

# 查看你systemd守护进程管理的组件日志
## kubelet是systemd方式运行的
journalctl -u kubelet

# 查看Pod部署的组件日志
## k8s的其他组件都是pod运行的
kubectl logs kube-proxy-xxx -n kube-system

## 持续查看日志
kubectl logs -f kube-proxy-xxx -n kube-system

# 从OS中查看日志
tail /var/log/messages

# 持续查看OS日志
tail -f /var/log/messages

kubectl logs查看日志原理

kubectl logs (获取容器标准输出的日志) -----> apiserver -----> kubelet -----> docker(接管容器标准输出并写入文件中持久化保存) -----> 获取某个容器的日志

# 标准输出在宿主机的路径:
/var/lib/docker/containers/容器id/容器id-json.log

# 想要查看该日志文件
## 先通过pod名称查询容器id
docker ps|grep pod名称

## 进入该容器id的目录
cd /var/lib/docker/containers/容器id/

## 查看该容器id的log
cat 容器id-json.log

# 防止文件过大打开卡死,可以使用
less 容器id-json.log

管理k8s应用日志

k8s集群上部署的应用程序日志


收集k8s日志思路

在这里插入图片描述


收集标准输出

针对标准输出
DaemonSet方式在每个Node上部署一个日志收集程序,采集/var/lib/docker/containers/目录下所有容器日志


收集容器中日志文件

针对容器中日志文件;
Pod中增加一个容器运行日志采集器,使用emtyDir共享日志目录,让日志采集器读取日志文件.


k8s查看节点状态失败

参考: https://www.cnblogs.com/dudu/p/12146344.html
在这里插入图片描述
需要安装Prometheus监控组件
才能使用kubectl get pods -n monitoring命令


k8s部署prometheus监控

官方网站 https://prometheus.io/
官方文档 https://prometheus.io/docs/introduction/overview/
https://github.com/prometheus-operator/kube-prometheus

# clone项目
git clone https://github.com/prometheus-operator/kube-prometheus.git

cd kube-prometheus

# apply
kubectl apply --server-side -f manifests/setup

在这里插入图片描述

# apply
kubectl apply -f manifests/

# 查看部署是否成功
until kubectl get servicemonitors --all-namespaces ; do date; sleep 1; echo ""; done

在这里插入图片描述

# 查看节点状态
kubectl get pods -n monitoring

在这里插入图片描述

相关文章:

  • Linux网络编程概述
  • ISATAP自动隧道
  • web自动化第一步:安装浏览器和驱动(Chrome和ChromeDriver)
  • 【Java】字符串String类
  • 相似度计算 第33次CCF-CSP计算机软件能力认证
  • 分秒计数器设计
  • XPath、XQuery 以及 XSLT 函数
  • 【工具变量】上市公司供应链稳定性数据两个维度(2013-2023年)
  • Netty源码—10.Netty工具之时间轮二
  • 【已开源】UniApp+vue3跨端应用从0到1开发指南、uniapp+vue3模板应用
  • 生成和管理作品集链接
  • Trae-中国首款免费AI原生IDE
  • Router [Continuation Settings]
  • 打包python文件生成exe
  • 【C++】 string底层封装的模拟实现
  • 【蓝桥杯】每日练习 Day 16,17
  • GO语言杂记(文章持续更新)
  • PostgreSQL15深度解析(从15.0-15.12)
  • 打造高性能中文RAG系统:多轮对话与语义检索的完美结合
  • vulhub靶场—— Tomcat8
  • 做色流网站在哪买/seo优化的网站
  • 大兴网站建设公司/网站查询服务器
  • 网站用户体现好坏/网站推广推广
  • 凡科手机建站教程/深圳互联网营销
  • 做爰网站名称/站长是什么级别
  • 建设网站属于什么费用/搜索引擎营销分析