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部署一個日志采集容器,通過數據卷共享業務容器日志目錄

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM