首页 > 其他分享 >【云原生 • Kubernetes】k8s功能特性、k8s集群架构介绍

【云原生 • Kubernetes】k8s功能特性、k8s集群架构介绍

时间:2024-01-14 15:22:05浏览次数:32  
标签:容器 架构 logs Kubernetes kubectl 输出 日志 k8s my

 

序言

你只管努力,其他交给时间,时间会证明一切。

文章标记颜色说明:

  • 黄色:重要标题
  • 红色:用来标记结论
  • 绿色:用来标记一级论点
  • 蓝色:用来标记二级论点

Kubernetes (k8s) 是一个容器编排平台,允许在容器中运行应用程序和服务。今天学习一下k8s日志查看相关方法

希望这篇文章能让你不仅有一定的收获,而且可以愉快的学习,如果有什么建议,都可以留言和我交流

 专栏介绍

这是这篇文章所在的专栏,欢迎订阅:【深入解析k8s】专栏

简单介绍一下这个专栏要做的事:

主要是深入解析每个知识点,帮助大家完全掌握k8s,以下是已更新的章节

这是专栏介绍文章地址:【深入解析K8S专栏介绍】

今天我们来看一下K8s 日志相关问题

  • 日志类型
  • 查看日志的方法

1日志类型

在 Kubernetes(简称为 k8s)中,主要有以下几种类型的日志:

  1. 容器日志
  2. Kubernetes 系统组件日志
  3. Fluentd 日志
  4. Sidecar 容器日志
  5. Init 容器日志
  6. 系统日志

1.1 容器日志

在 Kubernetes 中,每个容器都有一个对应的日志文件,用于存储容器的日志输出。

容器的标准输出和标准错误输出会被重定向到容器的日志文件中,可以通过在节点上查看容器的日志文件来查看容器的日志输出。

容器日志通常包括容器的启动日志、应用程序输出日志和错误日志等。

1.2 Kubernetes 系统组件日志

在 Kubernetes 中,还有一些系统组件,例如 kube-apiserver、kube-controller-manager、kube-scheduler 等,它们也会产生日志输出。

这些组件的日志输出通常包括组件的启动日志、操作日志和错误日志等。

1.3 Fluentd 日志

Fluentd 是 Kubernetes 中的一个日志收集器,用于收集容器的日志输出。

Fluentd 可以从容器的标准输出和标准错误输出中收集日志,并将其发送到指定的目标(例如 Elasticsearch、Kafka 等)。

Fluentd 的日志输出通常包括收集到的日志数据和发送到目标的日志数据等。

1.4 Sidecar 容器日志

在 Kubernetes 中,有一种常见的模式是使用 Sidecar 容器来扩展主容器的功能。

Sidecar 容器通常用于收集主容器的日志输出、监控主容器的运行情况、提供额外的服务等。

Sidecar 容器的日志输出通常包括主容器的日志数据和 Sidecar 容器自身的日志数据等。

1.5 Init 容器日志

在 Kubernetes 中,可以使用 Init 容器来执行启动任务或初始化任务。

Init 容器通常在主容器启动之前运行,用于准备容器的环境、配置文件等。

Init 容器的日志输出通常包括初始化任务的日志数据和主容器的启动日志等。

1.6 系统日志

除了容器和 Kubernetes 系统组件的日志外,节点上还会产生系统日志,例如操作系统的日志、网络日志等。

这些日志数据通常包含节点的运行情况、硬件故障、网络问题等信息,对于排查节点级别的问题非常有用。

2 查看日志的方法

在 Kubernetes 中,容器的日志输出非常重要,可以帮助我们监控和调试应用程序的运行情况。

下面是一些高效查看 Kubernetes 日志的方法:

  1. 使用 kubectl logs 命令
  2. 使用 kubectl logs 命令查看多个容器
  3. 使用 kubectl logs 命令查看最新的日志
  4. 使用 kubectl logs 命令查看时间戳
  5. 使用 kubectl logs 命令查看前 n 行日志
  6. 使用 kubectl logs 命令查看特定时间段的日志
  7. 使用 kubectl logs 命令查看多个 Pod 的日志
  8. 使用 kubectl logs 命令查看多个容器的日志
  9. 使用 Kubernetes Dashboard
  10. 使用第三方工具

2.1 使用 kubectl logs 命令

kubectl logs 命令可以用于查看 Kubernetes Pod 的日志输出。使用该命令时,需要指定 Pod 的名称和容器的名称。

例如,要查看名为 my-pod 中名为 my-container 的容器的日志,可以执行以下命令:

kubectl logs my-pod my-container
 

该命令会输出容器的日志输出,包括标准输出和标准错误输出。

2.2 使用 kubectl logs 命令查看多个容器

如果 Pod 中有多个容器,可以使用 kubectl logs 命令来查看多个容器的日志输出。可以使用 -c 选项来指定容器的名称。

例如,要查看名为 my-pod 中名为 my-container1 和 my-container2 的容器的日志,可以执行以下命令:

  1.   kubectl logs my-pod -c my-container1
  2.   kubectl logs my-pod -c my-container2

2.3 使用 kubectl logs 命令查看最新的日志

如果只想查看最新的日志输出,可以使用 -f 选项来实时查看容器的日志输出。

例如,要查看名为 my-pod 中名为 my-container 的容器的最新日志输出,可以执行以下命令:

kubectl logs -f my-pod my-container
 

该命令会实时输出容器的日志输出,直到手动停止输出。

2.4 使用 kubectl logs 命令查看时间戳

如果想查看日志输出的时间戳,可以使用 -t 选项来打印时间戳。

例如,要查看名为 my-pod 中名为 my-container 的容器的日志输出,并打印时间戳,可以执行以下命令:

kubectl logs -t my-pod my-container
 

2.5 使用 kubectl logs 命令查看前 n 行日志

如果只想查看日志输出的前 n 行,可以使用 --tail 选项来指定输出的行数。

例如,要查看名为 my-pod 中名为 my-container 的容器的前 10 行日志输出,可以执行以下命令:

kubectl logs --tail=10 my-pod my-container
 

2.6 使用 kubectl logs 命令查看特定时间段的日志

如果想查看特定时间段内的日志输出,可以使用 --since 和 --until 选项来指定时间段。

例如,要查看名为 my-pod 中名为 my-container 的容器在 2022 年 1 月 1 日至 2022 年 1 月 2 日期间的日志输出,可以执行以下命令:

kubectl logs --since="2022-01-01T00:00:00Z" --until="2022-01-02T00:00:00Z" my-pod my-container
 

2.7 使用 kubectl logs 命令查看多个 Pod 的日志

如果需要同时查看多个 Pod 的日志输出,可以使用 kubectl logs 命令的 -l 选项来指定 Pod 的标签选择器。例如,要查看标签为 app=my-app 的所有 Pod 的名为 my-container 的容器的日志输出,可以执行以下命令:

kubectl logs -l app=my-app -c my-container
 

该命令会输出所有包含 app=my-app 标签的 Pod 中名为 my-container 的容器的日志输出。

2.8 使用 kubectl logs 命令查看多个容器的日志

如果你需要同时查看多个容器的日志输出,可以使用 kubectl logs 命令的 -f 和 -c 选项来实时查看多个容器的日志输出。例如,要实时查看名为 my-pod 中名为 my-container1 和 my-container2 的容器的日志输出,可以执行以下命令:

kubectl logs -f my-pod -c my-container1 -c my-container2
 

该命令会实时输出名为 my-pod 中名为 my-container1 和 my-container2 的容器的日志输出。

2.9 使用 Kubernetes Dashboard

如果你使用 Kubernetes Dashboard 来管理 Kubernetes 集群,那么可以使用 Dashboard 来查看容器的日志输出。Dashboard 是一个基于 Web 的 Kubernetes 管理界面,可以帮助你更方便地管理和监控 Kubernetes 集群。

在 Dashboard 中,可以轻松地查看 Pod 的日志输出,包括标准输出和标准错误输出。你可以通过单击 Pod 的名称,在 Pod 详情页中查看日志输出。

2.10 使用第三方工具

除了 kubectl logs 命令外,还有一些第三方工具可以用于查看 Kubernetes 日志,例如 Elasticsearch、Fluentd、Kibana、Prometheus、Grafana 等。

这些工具可以帮助你更加方便地查看和分析 Kubernetes 日志,提高日志分析的效率。

 ELK Stack

ELK Stack 是一个常用的日志收集和分析工具,包括 Elasticsearch、Logstash 和 Kibana。在 Kubernetes 中,可以使用 ELK Stack 来收集和分析容器的日志输出。

Logstash 用于收集容器的日志输出,并将其发送到 Elasticsearch 中,Kibana 用于展示和分析日志数据。

ELK Stack 的日志输出通常包括收集到的日志数据和展示和分析的日志数据等。 

3 总结

总之,高效查看 Kubernetes 日志需要选择合适的工具和方法,并且需要根据实际情况进行调整和优化。

在实际使用中,建议使用多种方法来查看 Kubernetes 日志,以便更全面地了解容器的运行情况。

 

4 投票

      技术沟通 | 交流 | 合作 微信名片

标签:容器,架构,logs,Kubernetes,kubectl,输出,日志,k8s,my
From: https://www.cnblogs.com/py169/p/17963755

相关文章

  • 深入理解 Hadoop (一)网络通信架构与源码浅析
    HadoopRPC网络通信框架原理剖析YARNRPC服务端的工作大致可以分为四个阶段:第一个阶段:Server初始化和启动在Server初始化的时候,会初始化Listener组件(内部启动了一个AcceptSelector绑定了相应的端口,用来处理客户端的OP_ACCEPT事件),内部还初始化了一组Reader线程,其......
  • API架构风格
    浅谈6种流行的API架构风格前言API在现代软件开发中扮演着重要的角色,它们是不同应用程序之间的桥梁。编写业务API是日常开发工作中最常见的一部分,选择合适的API框架对项目的成功起到了至关重要的作用。本篇文章将浅谈一下当前6种流行的API架构风格的优点、缺点以及适用场景。6......
  • Kubernetes Headless服务
    1、概述HeadlessServices是一种特殊的service,其spec:clusterIP表示为None,这样在实际运行时就不会被分配ClusterIP,也被称为无头服务,通过DNS解析提供服务发现。与普通服务不同的是HeadlessServices不提供负载均衡功能,每个Pod都有唯一的DNS记录,直接映射到其IP地址,适用于有状态应用......
  • K8s核心技术-集群安全机制(概述),(RBAC实现鉴权)
    K8s核心技术-集群安全机制(概述)Kubernetes(K8s)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。在Kubernetes集群中,安全是一个非常重要的考虑因素。集群安全机制旨在保护集群中的资源和敏感信息,防止未经授权的访问和恶意行为。集群安全机制包括以下方面:认证(Authe......
  • K8s核心技术-Service-三种类型
    KubernetesService是一种抽象层,用于暴露应用程序的网络服务。它可以将应用程序的网络接口与底层的Pod运行实例进行关联,从而实现负载均衡和服务发现。KubernetesService提供了三种类型来满足不同的需求:ClusterIP:这是Service的默认类型。它将为每个Service分配一个无法从集......
  • Kubernetes Controller(Deployment)-发布应用
    Kubernetes控制器(Deployment)是一个用于发布和管理应用程序的核心组件。它提供了一种声明式的方式来定义应用程序的期望状态,并确保系统自动地将当前状态与期望状态保持一致。通过使用Deployment,您可以定义应用程序的副本数、应用程序部署的容器镜像、应用程序的依赖关系等等。一旦......
  • k8s_Kubernetes 创建 pod 流程
    创建pod流程1.编写Pod配置文件:先创建一个YAML或JSON格式的Pod配置文件,文件中包含了Pod的元数据和规格。元数据包括Pod的名称、命名空间、标签等信息,规格包括容器的镜像、端口、环境变量等配置。2.使用kubectl命令创建Pod:在控制台或命令行中运行kubectlcreate......
  • k8s_影响pod 的因素
    Kubernetes影响pod调度的因素包括:节点资源:Kubernetes会检查每个节点的资源使用情况,并将pod调度到具有足够可用资源(如CPU、内存和存储)的节点上。节点亲和性和偏好:Kubernetes可以使用节点亲和性和节点偏好来指定pod应该在哪些节点上调度。例如,可以指定pod应该调度到具有特定标签或......
  • k8s安装
    一、创建配置文件cat<<EOF>/etc/yum.repos.d/kubernetes.repo[kubernetes]name=Kubernetesbaseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64enabled=1gpgcheck=0repo_gpgcheck=1gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum......
  • Ubuntu 20.04版本安装k8s控制节点
    一、环境配置服务器配置:2核4GIP:192.168.10.23主机名:master4将改主机加入此集群#1.修改主机名hostnamectlset-hostnamemaster4&&bash#2.添加hosts127.0.1.1master4192.168.10.20master192.168.10.21master2192.168.10.22master3192.168.10.23master419......