我是靠谱客的博主 和谐季节,最近开发中收集的这篇文章主要介绍kubernetes基础学习(三)监控与日志,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1、名称空间

namespace  用于将k8s中的资源进行隔离,形成多个虚拟集群(更加方便管理)

应用场景:
根据不同团队划分命名空间
根据项目划分命名空间
kubectl get namespace
• default:默认命名空间
• kube-system:K8s系统方面的命名空间
• kube-public:公开的命名空间,谁都可以访问,
• kube-node-lease:K8s内部命名空间

指定资源命名空间:

命令行加 -n
yaml资源元数据里指定namespace字段
查看命名空间
kubectl  get  namespace
创建命名空间
kubectl  create namespace wanghaonan
创建命名空间内容器
kubectl create deployment nginx --image=nginx:v1 -n wanghaonan
查看命名空间内容器
kubectl get deploy -n wanghaonan
2、查看资源集群状态
查看master组件状态:
kubectl get cs
查看node状态:
kubectl get node
查看Apiserver代理的URL:
kubectl cluster-info
查看集群详细信息:
kubectl cluster-info dump
查看资源信息:
kubectl describe <资源> <名称>
查看资源信息:
kubectl get <资源>
查看有多少资源
kubectl api-resources
监控集群资源利用率
查看Node资源消耗:
kubectl top node <node name>
查看Pod资源消耗:
kubectl top pod <pod name>
执行时会提示错误:error: Metrics API not available
这是因为这个命令需要由metric-server服务提供数据,而这个服务默认没
有安装,还需要手动部署下。
Metrics Server是一个集群范围的资源使用情况的数据聚合器。作为一个应用部署在集群中。Metric server从每个节点上Kubelet API收集指标,通过Kubernetes聚合器注册在Master APIServer中。为集群提供Node、Pods资源利用率指标
kubectl top -> apiserver -> metrics-server(第三方工具,需要下载) -> kubelet(cadvisor)
查看官方文档:https://github.com/kubernetes-sigs/metrics-server
Metrics Server部署:
链接:https://pan.baidu.com/s/15PpGleGX-PDl7hn2pvUaeA?pwd=1234 
提取码:1234
检查是否部署成功:
kubectl apply -f metrics-server.yaml -n kube-system

[root@k8s-master ~]# kubectl get pods -n kube-system 
NAME                                      READY   STATUS    RESTARTS   AGE
calico-kube-controllers-97769f7c7-tcbz9   1/1     Running   0          19h
calico-node-4kbmk                         1/1     Running   2          19h
calico-node-9fmdq                         1/1     Running   0          19h
calico-node-ztkcm                         1/1     Running   0          19h
coredns-7f89b7bc75-8c98m                  1/1     Running   0          19h
coredns-7f89b7bc75-zjnrz                  1/1     Running   0          19h
etcd-k8s-master                           1/1     Running   0          19h
kube-apiserver-k8s-master                 1/1     Running   0          19h
kube-controller-manager-k8s-master        1/1     Running   0          19h
kube-proxy-rgg7s                          1/1     Running   0          19h
kube-proxy-td752                          1/1     Running   2          19h
kube-proxy-zrbvh                          1/1     Running   0          19h
kube-scheduler-k8s-master                 1/1     Running   0          19h
metrics-server-645c7cc6f5-l74sf           1/1     Running   0          17m


kubectl get apiservices |grep metrics
kubectl get --raw /apis/metrics.k8s.io/v1beta1/nodes
如果状态True并能返回数据说明Metrics Server服务工作正常。


[root@k8s-master ~]# kubectl get --raw /apis/metrics.k8s.io/v1beta1/nodes
{"kind":"NodeMetricsList","apiVersion":"metrics.k8s.io/v1beta1","metadata":{},"items":[{"metadata":{"name":"k8s-master","creationTimestamp":"2022-12-08T02:34:13Z","labels":{"beta.kubernetes.io/arch":"amd64","beta.kubernetes.io/os":"linux","kubernetes.io/arch":"amd64","kubernetes.io/hostname":"k8s-master","kubernetes.io/os":"linux","node-role.kubernetes.io/control-plane":"","node-role.kubernetes.io/master":""}},"timestamp":"2022-12-08T02:34:08Z","window":"1m0s","usage":{"cpu":"135353047n","memory":"1913660Ki"}},{"metadata":{"name":"k8s-node1","creationTimestamp":"2022-12-08T02:34:13Z","labels":{"beta.kubernetes.io/arch":"amd64","beta.kubernetes.io/os":"linux","kubernetes.io/arch":"amd64","kubernetes.io/hostname":"k8s-node1","kubernetes.io/os":"linux"}},"timestamp":"2022-12-08T02:34:05Z","window":"1m0s","usage":{"cpu":"67920796n","memory":"1267524Ki"}},{"metadata":{"name":"k8s-node2","creationTimestamp":"2022-12-08T02:34:13Z","labels":{"beta.kubernetes.io/arch":"amd64","beta.kubernetes.io/os":"linux","kubernetes.io/arch":"amd64","kubernetes.io/hostname":"k8s-node2","kubernetes.io/os":"linux"}},"timestamp":"2022-12-08T02:34:08Z","window":"1m0s","usage":{"cpu":"1114381176n","memory":"1688164Ki"}}]}
[root@k8s-master ~]# kubectl top node
NAME         CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%   
k8s-master   136m         6%     1868Mi          50%       
k8s-node1    68m          3%     1237Mi          42%       
k8s-node2    1115m        55%    1648Mi          56%       
[root@k8s-master ~]# kubectl top pod
NAME                     CPU(cores)   MEMORY(bytes)   
nginx-6f494fd48c-jwm4b   0m           3Mi             
web-674477549d-576fr     1m           183Mi           
web-674477549d-6kmzr     1m           169Mi 

3、管理K8s组件日志

systemd守护进程管理的组件:
journalctl -u kubelet
Pod部署的组件:
kubectl logs kube-proxy-btz4p -n kube-system
系统日志:
/var/log/messages
查看容器标准输出日志:
kubectl logs <Pod名称>
kubectl logs -f <Pod名称>
kubectl logs -f <Pod名称> -c <容器名称>
标准输出在宿主机的路径:
/var/lib/docker/containers/<container-id>/<container-id>-json.log

针对标准输出: 以DaemonSet方式在每个Node上部署一个日志收集程序,采集/var/lib/docker/containers/目录下所有容器日志
针对容器中日志文件: 在Pod中增加一个容器运行日志采集器,使用emtyDir共享日志目录让日志采集器读取到日志文件

最后

以上就是和谐季节为你收集整理的kubernetes基础学习(三)监控与日志的全部内容,希望文章能够帮你解决kubernetes基础学习(三)监控与日志所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(60)

评论列表共有 0 条评论

立即
投稿
返回
顶部