kubernetes監控與日誌管理
阿新 • • 發佈:2020-10-05
監控叢集資源利用率
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
vimcomponents.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部署一個日誌採集容器,通過資料卷共享業務容器日誌目錄