• 3-kubernetes监控与日志管理


    监控集群资源利用率

    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部署一个日志采集容器,通过数据卷共享业务容器日志目录

  • 相关阅读:
    [MySQL]You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column
    mysql的索引
    Mysql中的Btree与Hash索引
    Tomcat集群的session共享
    Linux常用命令总结
    docker elk
    docker+mysql+zabix-server环境搭建
    centos7系统服务管理
    Linux vim常用命令
    linux系统日志查看
  • 原文地址:https://www.cnblogs.com/huanglingfa/p/13769870.html
Copyright © 2020-2023  润新知