Linux容器篇-kubernetes监控和日志管理

文章目录

  • 一、kubernetes基本概念
  • 二、集群资源监控
    • 查看API资源对象及缩写
    • 查看master组件状态
    • 查看集群节点状态
    • 查看资源详情
    • 查看资源信息
    • 资源监控服务
  • k8s日志
    • kubelet日志:
    • pod组件日志:
    • 系统日志:
    • 容器的标准输出日志:


一、kubernetes基本概念

  • Pod:k8s的最小部署单位,一组容器的集合

  • Development:最常见的控制器,用于更高级别部署和管理Pod

  • Service:为一组Pod提供负载均衡,对外提供统一的访问入口

  • Label: 标签,附加到某个资源上,用于关联对象,查询和筛选

  • NameSpace:命名空间,将对象逻辑上隔离,也有利于权限控制

​ kubernetes将资源对象逻辑上隔离,从而形成了多个虚拟集群,更方便管理。

kubectl get namespace
NAME                   STATUS   AGE
calico-apiserver       Active   12d
calico-system          Active   12d
default                Active   12d
kube-node-lease        Active   12d
kube-public            Active   12d
kube-system            Active   12d
kubernetes-dashboard   Active   12d
tigera-operator        Active   12d

​ default : 默认命名空间
​ kube-system: k8s系统方面的命名空间
​ kube-public : 公开的命名空间,谁都可以访问
​ kube-node-least : k8s内部命名空间

​ 两种方法指定资源所属的命名空间:

命令行加-n选项;yaml资源元数据里指定namespace字段;

二、集群资源监控

查看API资源对象及缩写

[root@k8s-master ~]# kubectl api-resources 
NAME                              SHORTNAMES                                      APIVERSION                             NAMESPACED   KIND
bindings                                                                          v1                                     true         Binding
componentstatuses                 cs                                              v1                                     false        ComponentStatus
configmaps                        cm                                              v1                                     true         ConfigMap
endpoints                         ep                                              v1                                     true         Endpoints
events                            ev                                              v1                                     true         Event
limitranges                       limits                                          v1                                     true         LimitRange
namespaces                        ns                                              v1                                     false        Namespace
nodes                             no                                              v1                                     false        Node
persistentvolumeclaims            pvc                                             v1                                     true         PersistentVolumeClaim
persistentvolumes                 pv                                              v1                                     false        PersistentVolume
pods                              po                                              v1                                     true         Pod
......

资源对象的简写可以提高我们在使用k8s过程中的输入效率,但是对初学者来说不容易理解,可以采用配置kubectl自动补全的方式

查看master组件状态

这条命令会显示master节点的主要组件:etcd,controller-manager,scheduler的工作状态

[root@k8s-master ~]#kubectl get cs
[root@k8s-master ~]# kubectl get componentstatuses 
Warning: v1 ComponentStatus is deprecated in v1.19+
NAME                 STATUS    MESSAGE   ERROR
etcd-0               Healthy   ok        
controller-manager   Healthy   ok        
scheduler            Healthy   ok

查看集群节点状态

这条命令可以查到当前集群master节点和node节点的工作状态

kubectl get nodes
[root@k8s-master ~]# kubectl get nodes
NAME         STATUS   ROLES           AGE   VERSION
k8s-master   Ready    control-plane   13d   v1.28.0
k8s-node1    Ready    <none>          13d   v1.28.0
k8s-node2    Ready    <none>          13d   v1.28.0

查看资源详情

kubectl describe <资源类型> <资源名称>

查看一个deployment的详细信息

[root@k8s-master ~]# kubectl get deployment -n test 
NAME         READY   UP-TO-DATE   AVAILABLE   AGE
nginx        3/3     3            3           5d17h
nginx-test   1/1     1            1           11d
[root@k8s-master ~]# kubectl describe deployment nginx -n test 
Name:                   nginx
Namespace:              test
CreationTimestamp:      Wed, 10 Jul 2024 17:04:14 +0800
Labels:                 app=nginx
Annotations:            deployment.kubernetes.io/revision: 1
Selector:               app=nginx
Replicas:               3 desired | 3 updated | 3 total | 3 available | 0 unavailable
StrategyType:           RollingUpdate
MinReadySeconds:        0
RollingUpdateStrategy:  25% max unavailable, 25% max surge
Pod Template:Labels:  app=nginxContainers:nginx:Image:        nginx:1.16Port:         <none>Host Port:    <none>Environment:  <none>Mounts:       <none>Volumes:        <none>
Conditions:Type           Status  Reason----           ------  ------Progressing    True    NewReplicaSetAvailableAvailable      True    MinimumReplicasAvailable
OldReplicaSets:  <none>
NewReplicaSet:   nginx-85bfcd86d5 (3/3 replicas created)
Events:          <none>

查看一个pod的详细信息

[root@k8s-master ~]# kubectl get pods -n test 
NAME                         READY   STATUS    RESTARTS        AGE
nginx-85bfcd86d5-5dl44       1/1     Running   3 (4d12h ago)   5d17h
nginx-85bfcd86d5-7kjvt       1/1     Running   3 (4d12h ago)   5d17h
nginx-85bfcd86d5-fltkh       1/1     Running   3 (4d12h ago)   5d17h
nginx-test-d87b84fb7-lcvg7   1/1     Running   6 (4d12h ago)   11d
[root@k8s-master ~]# kubectl describe pods nginx-test-d87b84fb7-lcvg7 -n test 
Name:             nginx-test-d87b84fb7-lcvg7
Namespace:        test
Priority:         0
Service Account:  default
Node:             k8s-node1/192.168.3.11
Start Time:       Thu, 04 Jul 2024 10:45:20 +0800
Labels:           k8s-app=nginx-testpod-template-hash=d87b84fb7
Annotations:      cni.projectcalico.org/containerID: 5d84c8a34dd067d8b77205c1abfd7eef58ddf67571c39e807e862457bc400c5fcni.projectcalico.org/podIP: 10.244.36.97/32cni.projectcalico.org/podIPs: 10.244.36.97/32
Status:           Running
IP:               10.244.36.97
IPs:IP:           10.244.36.97
Controlled By:  ReplicaSet/nginx-test-d87b84fb7
Containers:nginx-test:Container ID:   docker://1a0bdae7e63c45454024fd0e66fdbc615d832a3bd82ba5a1f27315c75ce63ec7Image:          nginx:1.23Image ID:       docker-pullable://nginx@sha256:f5747a42e3adcb3168049d63278d7251d91185bb5111d2563d58729a5c9179b0Port:           <none>Host Port:      <none>State:          RunningStarted:      Tue, 16 Jul 2024 10:04:31 +0800Last State:     TerminatedReason:       CompletedExit Code:    0Started:      Thu, 11 Jul 2024 19:23:30 +0800Finished:     Thu, 11 Jul 2024 22:18:17 +0800Ready:          TrueRestart Count:  6Environment:    <none>Mounts:/var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-9nsbn (ro)
Conditions:Type              StatusInitialized       True Ready             True ContainersReady   True PodScheduled      True 
Volumes:kube-api-access-9nsbn:Type:                    Projected (a volume that contains injected data from multiple sources)TokenExpirationSeconds:  3607ConfigMapName:           kube-root-ca.crtConfigMapOptional:       <nil>DownwardAPI:             true
QoS Class:                   BestEffort
Node-Selectors:              <none>
Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300snode.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:Type     Reason          Age                From             Message----     ------          ----               ----             -------Warning  NodeNotReady    4d13h              node-controller  Node is not readyNormal   SandboxChanged  33m (x2 over 33m)  kubelet          Pod sandbox changed, it will be killed and re-created.Normal   Pulled          32m                kubelet          Container image "nginx:1.23" already present on machineNormal   Created         32m                kubelet          Created container nginx-testNormal   Started         32m                kubelet          Started container nginx-test

查看service的详细信息

[root@k8s-master ~]# kubectl get service -n test 
NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
nginx-test   ClusterIP   10.96.255.119   <none>        80/TCP    11d       
[root@k8s-master ~]# kubectl describe service nginx-test -n test 
Name:              nginx-test
Namespace:         test
Labels:            k8s-app=nginx-test
Annotations:       <none>
Selector:          k8s-app=nginx-test
Type:              ClusterIP
IP Family Policy:  SingleStack
IP Families:       IPv4
IP:                10.96.255.119
IPs:               10.96.255.119
Port:              tcp-80-80-rqfqj  80/TCP
TargetPort:        80/TCP
Endpoints:         10.244.36.97:80
Session Affinity:  None
Events:            <none>

查看资源信息

kubectl get <资源类型> <资源名称>
-o wide  显示详情
-o yaml  将配置输出为yaml格式
-n namespace  查看对应命名空间

资源监控服务

资源监控服务由metric-server服务提供数据,而这个服务默认没有安装,还需要手动部署一下。

metric server 是一个集群范围的资源使用情况的数据聚合器,作为一个应用部署在集群中。metric server从每个节点上的kubelet API 收集指标,通过kubernetes聚合器注册在Master APIserver中,为集群提供Node、 Pods资源利用率指标。

metric组件的yaml文件可以在github拉取,国内网络不允许,需要合适的加速器

查看node资源消耗

kubectl top node <node name>[root@k8s-master ~]# kubectl top nodes
NAME         CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%   
k8s-master   292m         14%    1154Mi          67%       
k8s-node1    169m         8%     706Mi           41%       
k8s-node2    220m         11%    883Mi           51%  

查看Pod资源消耗

kubectl top pod <pod name>[root@k8s-master ~]# kubectl top pod nginx-test-d87b84fb7-lcvg7 -n test 
NAME                         CPU(cores)   MEMORY(bytes)   
nginx-test-d87b84fb7-lcvg7   0m           12Mi  

k8s日志

kubelet日志:

到对应的宿主机查看,使用

journalctl -u kubelet

pod组件日志:

kubectl logs <资源名称> -n <命名空间>

查看pod日志

[root@k8s-master ~]# kubectl logs nginx-test-d87b84fb7-lcvg7 -n test 
/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
2024/07/16 02:04:32 [notice] 1#1: using the "epoll" event method
2024/07/16 02:04:32 [notice] 1#1: nginx/1.23.4
2024/07/16 02:04:32 [notice] 1#1: built by gcc 10.2.1 20210110 (Debian 10.2.1-6) 
2024/07/16 02:04:32 [notice] 1#1: OS: Linux 3.10.0-1160.71.1.el7.x86_64
2024/07/16 02:04:32 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576
2024/07/16 02:04:32 [notice] 1#1: start worker processes
2024/07/16 02:04:32 [notice] 1#1: start worker process 29
2024/07/16 02:04:32 [notice] 1#1: start worker process 30

系统日志:

/var/log/messages

容器的标准输出日志:

kubectl logs <Pod名称>
kubectl logs -f <Pod名称> #-f可以动态显示日志kubectl exec -it <Pod名称> -- bash  #进入pod内部查看标准输出日志

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/872672.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智能制造 v3.13.16 发布,ERP、MES 更新

智能制造一体化管理系统 [SpringBoot2 - 快速开发平台]&#xff0c;适用于制造业、建筑业、汽车行业、互联网、教育、政府机关等机构的管理。包含文件在线操作、工作日志、多班次考勤、CRM、ERP 进销存、项目管理、EHR、拖拽式生成问卷、日程、笔记、工作计划、行政办公、薪资模…

解决 React 中 setInterval 无法更新状态的问题:长按加速的实现

解决 React 中 setInterval 无法更新状态的问题&#xff1a;长按加速的实现 在开发 React 应用时&#xff0c;我们经常会遇到需要定时更新组件状态的场景。setInterval 是一个常用的定时器函数&#xff0c;但在 React 中使用它时&#xff0c;可能会遇到状态无法更新的问题。今…

构建LangChain应用程序的示例代码:66、如何使用LangChain实现程序辅助语言模型(PAL)

程序辅助语言模型(PAL)链 实现程序辅助语言模型,如https://arxiv.org/pdf/2211.10435.pdf所述。 from langchain_experimental.pal_chain import PALChain from langchain_openai import OpenAI# 创建OpenAI语言模型实例,设置温度为0,最大令牌数为512 llm OpenAI(temperatur…

java:aocache 与Spring Aop兼容问题

本文适用于所有AspectJ与Spring AOP混用的场景。 Spring AOP 是基于动态代理的实现AOP&#xff0c;基于 JDK代理和CGLib代理实现运行时织入&#xff08;runtime weaving&#xff09;。 Spring AOP的切面定义沿用了ASpectJ的注解体系&#xff0c;所以在Spring体系中注解定义切面…

this关键字、static关键字(静态变量、静态方法、静态代码块)、代码块、包

一、this关键字 1、使用区域&#xff1a;定义类时在类的方法中使用&#xff0c;包括构造方法和成员方法 2、特点&#xff1a;表示Java程序运行时正在调用此方法的对象 3、使用范围&#xff1a; &#xff08;1&#xff09;引用当前对象中的成员变量 典例&#xff1a;用于区…

MySQL-事务、日志

事务 特性 原子性 是指事务开始后&#xff0c;必须成功执行完所有的操作才会结束&#xff0c;否则会回滚到事务刚开始前。 拿转账来说&#xff0c;一个成功的 A向B转账100元的过程 会涉及如下过程&#xff1a; A&#xff1a;从数据库读取A的余额&#xff1b;A的余额-100&am…

QT小细节

QT小细节 1 QTextToSpeech1.1 cmake1.2 qmake QT6 6.7.2 1 QTextToSpeech 从下图可以看到&#xff0c;分别使用qmake或者cmake编译情况下的&#xff0c;QTextToSpeech的使用方法 QTextToSpeech官方链接&#xff0c;也可以直接在QT Creator的帮助中搜索 1.1 cmake 将上图中的…

ArkUI组件——循环控制/List

循环控制 class Item{name: stringprice:number}private items:Array<Item> [new Item("A0",2399),new Item("BE",1999),new Item("Ro",2799)] ForEach(this.items,(item:Item) > {})List组件 列表List是一种复杂的容器&#xff0c;…

微信小程序新建项目发现导航条不见了,及如何找回。

原因是现在小程序新建用的是 Skyline 渲染引擎 开启全局Skyline渲染引擎&#xff0c;因为Skyline不支持原生导航栏&#xff0c;所以就没显示原生导航栏了。 解决方法也很简单 app.json文件中的 “renderer”: “skyline”, 修改为 “renderer”:“webview”app.json文件中的…

CSS基础学习之元素定位(6)

目录 1、定位类型 2、取值 2.1、static 2.2、relative 2.3、absolute 2.4、fixed 2.5、stickty 3、示例 3.1、相对定位(relative) 3.2、绝对定位&#xff08;absolute&#xff09; 3.3、固定定位&#xff08;fixed&#xff09; 3.4、粘性定位&#xff08;sticky&…

大模型中的MoE是什么?

大模型中的MoE是什么&#xff1f; MoE&#xff08;Mixture of Experts&#xff09;是一种用于提高深度学习模型性能和效率的架构。其核心思想是通过引入多个专家&#xff08;Experts&#xff09;模型&#xff0c;每个输入数据只选择和激活其中的一部分专家模型来进行处理&…

nacos 适配瀚高数据库、ARM 架构

下载nacos源码&#xff1a; https://github.com/alibaba/nacos/tree/2.3.1 瀚高技术文档 1、修改pom.xml 根目录nacos-all > pom.xml<dependencyManagement><dependency><groupId>com.highgo</groupId><artifactId>HgdbJdbc</artifactI…

硅纪元视角 | 微软开发全新AI模型,革新电子表格处理效率!

在数字化浪潮的推动下&#xff0c;人工智能&#xff08;AI&#xff09;正成为塑造未来的关键力量。硅纪元视角栏目紧跟AI科技的最新发展&#xff0c;捕捉行业动态&#xff1b;提供深入的新闻解读&#xff0c;助您洞悉技术背后的逻辑&#xff1b;汇聚行业专家的见解&#xff0c;…

使用llama-cpp-python制作api接口

文章目录 概要整体操作流程技术细节小结 概要 使用llama-cpp-python制作api接口&#xff0c;可以接入gradio当中&#xff0c;参考上一节。 llama-cpp-python的github网址 整体操作流程 下载llama-cpp-python。首先判断自己是在CPU的环境下还是GPU的环境下。以下操作均在魔搭…

java占位符替换的五种方式

简介 在Java开发中&#xff0c;如何通过使用占位符来输出文本串&#xff0c;以提高代码的可维护性和扩展性。 背景 在业务开发中&#xff0c;文本串的输出常见&#xff0c;但直接拼接字段不利于后续修改。 解决方案 使用字符串模板和占位符&#xff0c;便于后续内容的修改…

springboot+js实现SSE消息推送

一、后端 1、新建工具类SseServiceTool package com.example.system_manage.utils;import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;import java.util.Map; i…

【Linux杂货铺】期末总结篇4:shell编程

&#x1f308;个人主页&#xff1a;聆风吟_ &#x1f525;系列专栏&#xff1a;Linux实践室、网络奇遇记 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 一. ⛳️什么是Shell脚本&#xff1f;二. ⛳️Shell 入门三. ⛳️Shell 变量3.1 &#x1f514;变…

Kotlin中Unit、Any和Nothing

Unit Unit是一个特殊的类型&#xff0c;它表示“没有意义的值”的单元类型。在Kotlin中&#xff0c;当你不需要函数返回任何具体值时&#xff0c;可以使用Unit类型。 和Java 中 void一样。 Any 所有非空类的父类 Any?所有类的父类 类似Java中Object Nothing 表示一个函数或…

# 如何解决 App Store 审核中的 4.3(a) 问题:Guideline 4.3(a) - Design - Spam

如何解决 App Store 审核中的 4.3(a) 问题&#xff1a;Guideline 4.3(a) - Design - Spam 4.3(a) 审核问题是指&#xff1a;你的应用与其他开发者提交的应用在二进制文件、元数据和/或概念上存在相似之处&#xff0c;仅有微小差别。这通常会导致你的应用被视为垃圾应用而被拒绝…

java启动springboot项目前根据环境变量动态改编yaml文件的变量值

需求&#xff1a;在学习FC时&#xff0c;启动一个springboot项目时需要由用户填写自己的某些特殊变量&#xff0c;解决方案是在FC中由用户自己添加环境变量&#xff0c;通过java代码获取到环境中的环境变量&#xff0c;在springboot启动前注入到yaml文件中。 1.java获取环境变…