监控集群资源利用率

metrics-server是一个集群范围的资源使用情况的数据聚合器,作为一个应用部署在集群中
metrics-server从每个节点上kubelet API收集指标,通过kubernetes聚合器注册在master APIserver中

Metrics-Server默认是没有部署的,需要手工进行部署

GitHub地址:https://github.com/kubernetes-sigs/metrics-server/
yaml文件下载地址
wget https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.3.7/components.yaml 

里面有两种模式可选:

1、HPA 模式可以实现pod水平扩展,可以增加pod的数量
2、VAP 模式可以实现Pod 可以横向扩展,可以增加pod的配置

修改yaml

vim  components.yaml

 86   image: lizhenliang/metrics-server:v0.3.7       #更换为国内的镜像下载地址
87 imagePullPolicy: IfNotPresent
88 args:
89 - --cert-dir=/tmp
90 - --secure-port=4443
91 - --kubelet-insecure-tls #跳过https(证书)校验
92 - --kubelet-preferred-address-types=InternalIP #使用IP进行连接kuberlet

kubectl describe node|grep InternalIP

修改完成后生效文件

kubectl apply -f components.yaml
kubectl get pods -n kube-system

查看metrics server是否向apiserver注册

kubectl get apiservice   #查看聚合成注册信息

如果有异常情况可以使用命令进行查看资源情况

kubectl describe apiservice v1beta1.metrics.k8s.io

查看node和pod资源消耗

kubectl top node      #不加节点名称默认是所有节点资源利用率
kubectl top pods #不加pod名称默认是全部pod的资源利用率
kubectl top pods nginx-f89759699-6n8qg #指定pod查看利用率
kubectl top pods -n kube-system #指定命名空间下的资源利用率

工作流程:kubectl top -->所有请求都请求apiserver -->代理metrics-server pod -->kubelet(cadvisor) -->通过cgroups中获取
apiserver聚合成:动态注册,安全代理,方便第三方应用接入,统一接入
cgroups 资源限制位置ls /sys/fs/cgroup/memory/kubepods/

k8s系统的组件日志

k8s Cluster里面部署的应用程序日志

- 标准输出

- 日志文件

1、标准输出路径
/var/log/docker/containers/<container-id>/<container-id>-json.log
2、查看容器标准输出日志
kubectl logs <pod名称>
kubectl logs -f <pod名称>
kubectl logs -f <pod名称> -c <容器名称>
3、容器内应用日志路径
/var/lib/kubelet/pods/<pod-id>/volumes/kubernetes.io~empty-dir/logs/acess.log

例子:

将日志文件通过数据卷挂着到宿主机目录,这样一来就可以在宿主机上统一查看日志了

mkdir /tmp/logs        #每个节点都要创建
kubectl apply -f pod.yaml
kubectl delete pod.yaml #创建错误删除
kubectl get pods -o wide 

vim pod.yaml

apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- name: web
image: lizhenliang/nginx-php
volumeMounts:
- name: logs
mountPath: /usr/local/nginx/logs #容器中的目录
volumes:
- name: logs
hostPath:
path: /tmp/logs #宿主机的目录
type: Directory

日志收集方案

1、deamonset方式在每个节点部署一个日志采集pod完成讲解的两个目录采集

2、sidecar在pod部署一个日志采集容器,通过数据卷共享业务容器日志目录

3-kubernetes监控与日志管理的更多相关文章

  1. Kubernetes 集群日志管理 - 每天5分钟玩转 Docker 容器技术(180)

    Kubernetes 开发了一个 Elasticsearch 附加组件来实现集群的日志管理.这是一个 Elasticsearch.Fluentd 和 Kibana 的组合.Elasticsearch ...

  2. Kubernetes 集群日志管理

    Kubernetes 开发了一个 Elasticsearch 附加组件来实现集群的日志管理.这是一个 Elasticsearch.Fluentd 和 Kibana 的组合.Elasticsearch ...

  3. Kubernetes 集群日志管理 Elasticsearch + fluentd(二十)

    目录 一.安装部署 Kubernetes 开发了一个 Elasticsearch 附加组件来实现集群的日志管理.这是一个 Elasticsearch.Fluentd 和 Kibana 的组合.Elas ...

  4. Kubernetes 集群日志管理【转】

    Kubernetes 开发了一个 Elasticsearch 附加组件来实现集群的日志管理.这是一个 Elasticsearch.Fluentd 和 Kibana 的组合.Elasticsearch ...

  5. 日志管理之 Docker logs - 每天5分钟玩转 Docker 容器技术(87)

    高效的监控和日志管理对保持生产系统持续稳定地运行以及排查问题至关重要. 在微服务架构中,由于容器的数量众多以及快速变化的特性使得记录日志和监控变得越来越重要.考虑到容器短暂和不固定的生命周期,当我们需 ...

  6. docker 日志管理

    高效的监控和日志管理对保持生产系统持续稳定地运行以及排查问题至关重要. 在微服务架构中,由于容器的数量众多以及快速变化的特性使得记录日志和监控变得越来越重要.考虑到容器短暂和不固定的生命周期,当我们需 ...

  7. 087、日志管理之 Docker logs (2019-05-09)

    参考https://www.cnblogs.com/CloudMan6/p/7749304.html   高效的监控和日志管理对保持生产系统只需稳定的运行以及排查问题至关重要.   在微服务架构中,由 ...

  8. Kubernetes容器集群管理环境 - Prometheus监控篇

    一.Prometheus介绍之前已经详细介绍了Kubernetes集群部署篇,今天这里重点说下Kubernetes监控方案-Prometheus+Grafana.Prometheus(普罗米修斯)是一 ...

  9. SQL Server中的事务日志管理(9/9):监控事务日志

    当一切正常时,没有必要特别留意什么是事务日志,它是如何工作的.你只要确保每个数据库都有正确的备份.当出现问题时,事务日志的理解对于采取修正操作是重要的,尤其在需要紧急恢复数据库到指定点时.这系列文章会 ...

随机推荐

  1. python3学习笔记回忆录01

    1.print(),print在python3中是一个函数,默认输出内容会自动换行,如果不换行需要加参数end=‘’ print ('hello,',end=' ’) print ('world!') ...

  2. Fragment的跳转

    1. 设置主Fragment 其它fragment得到它就可以了. 1 val ft = fragmentManager?.beginTransaction() 2 val maiFrgmt = Ma ...

  3. MockMvc编写单测

    目录 MockMvc 注意点 code 待测试的controller 测试类 github MockMvc 注意点 1.通过spring上下文获取mockmvc对象 @BeforeEach publi ...

  4. java初探(1)之静态页面化——客户端缓存

    利用服务端缓存技术,将页面和对象缓存在redis中,可以减少时间浪费,内存开销.但在每次请求的过程中,仍然会有大量静态资源的请求和返回. 使用静态页面技术,页面不必要使用页面交互技术,比如thymel ...

  5. 实际项目中遇到EF实体类的操作问题及操作方法

    之前一直做ASP,都是直接写数据库操作语句,但是现在使用linq或者EF了,具体数据库操作不会了,遇到几个问题,然后经过查找资料解决了,记录一下. 一.遇到序列化问题 遇到循环引用问题,我的项目是一个 ...

  6. 01vue.config.js

      const path = require('path'); module.exports = { // 基本路径 publicPath: process.env.NODE_ENV === 'pro ...

  7. h5内嵌微信小程序,调用微信支付功能

    在小程序中不能使用之前在浏览器中配置的支付功能,只能调用小程序专属的api进行支付. 因为需要在现在实现的基础上,再添加在小程序中调用微信支付功能,所以我的思路是这样的 1.在点击支付按钮时,判断是不 ...

  8. js中数组扁平化处理

  9. TP6.0 一对一模型关联 belongsTo 相对关联(反向关联)

    1. 创建数据表 一对一反向关联使用率很高 附表关联主表称为反向关联,又称为相对关联(tp官方手册这样叫) -- 分类表 CREATE TABLE `category` ( `id` int(10) ...

  10. java 求水仙花数

    package com.yc.bean; public class ShuiXianHua { public static void main(String[] args) { /** * 题目:打印 ...