監控集群資源利用率
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部署一個日志采集容器,通過數據卷共享業務容器日志目錄