k8s之部署metrics-server 轉載
Metrics Server是Kubernetes內置自動縮放管道的可擴展,高效的容器資源指標來源。
Metrics Server從Kubelet收集資源指標,并通過Metrics API在Kubernetes apiserver中公開它們, 以供Horizontal Pod Autoscaler和Vertical Pod Autoscaler使用。也可以通過訪問Metrics APIkubectl top,從而更輕松地調試自動縮放管道。
Metrics Server并非用于非自動縮放目的。例如,請勿將其用于將指標轉發到監視解決方案,也不要將其用作監視解決方案指標的來源。
Metrics Server提供:
適用于大多數集群的單個部署(請參閱需求)
可擴展支持多達5,000個節點集群
資源效率:Metrics Server使用0.5m的CPU核心,每個節點使用4 MB的內存
用于監測node,pod等的CPU,內存使用情況。
推薦版本 0.3.6 阿里源有資源包可以拉取鏡像

image.png
項目下載地址
1、修改配置 檢查 API Server 是否開啟了 Aggregator Routing:查看 API Server 是否具有 --enable-aggregator-routing=true 選項。 ···swift [root@k8s-master ~]# ps -ef |grep apiserver|grep true

image.png
1.1添加參數 [root@k8s-master ~]# grep -A 10 command /etc/kubernetes/manifests/kube-apiserver.yaml

image.png
-
--enable-aggregator-routing=true
kubeadm部署的在/etc/kubernetes/manifests/kube-apiserver.yaml這里修改,kubelet會監聽這個yaml文件的變化修改這個文件后kubelet會將自動終止原有的 kube-apiserver的 Pod,并自動創建一個使用了新配置參數的 Pod 作為替代。
2,metrics-server部署
官方下載 wget
修改components.yaml 文件,替換國內鏡像源地址:
image: registry.cn-hangzhou.aliyuncs.com/ljck8s/metrics-server-amd64:v0.3.6
修改配置,根據群集設置
-
--kubelet-insecure-tls #不要驗證Kubelets提供的服務證書的CA。僅用于測試目的。
-
--kubelet-preferred-address-types=InternalIP #metrics-server默認使用的是hostname,但是coredns中并沒有三臺物理機器的hostname和IP地址的關系,需要改為使用主機IP地址;

image.png
PS:k8s集群版本低于1.14的,還需修改 nodeSelector 字段 kubernetes.io/os 替換成 beta.kubernetes.io/os
部署metrics-server
kubectl apply -f components.yaml

image.png
kubectl get pods -n kube-system

image.png
kubectl top pods -A

image.png
kubectl top node

image.png
在node節點上 docker ps -a |grep sh* 可以找出名稱中包含sh* 的 容器
docker top CONTAINER ID 可以查看具體某個容器的 情況

image.png
docker stats 命令查看 docker stats 命令用來返回運行中的容器的實時數據流,
默認情況下,stats 使用參數-a或者--all,命令會每隔 1 秒鐘刷新一次輸出的內容直到你按下 ctrl + c。
docker stats -a
CONTAINER ID CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS 1ad181f01c76 0.00% 1.766MiB / 30.89GiB 0.01% 0B / 0B 0B / 0B 1 73c1189ddd0e 0.04% 1.178GiB / 2GiB 58.88% 0B / 0B 0B / 254kB 68 ed1a36493259 0.00% 1.25MiB / 30.89GiB 0.00% 0B / 0B 0B / 0B 1 05c08624b3d7 0.00% 1.543MiB / 30.89GiB 0.00% 0B / 0B 0B / 0B 1 9013e1d0a243 0.00% 1.578MiB / 30.89GiB 0.00% 0B / 0B 0B / 0B 1
[CONTAINER]:以短格式顯示容器的 ID。 [CPU %]:CPU 的使用情況。 [MEM USAGE / LIMIT]:當前使用的內存和最大可以使用的內存。 [MEM %]:以百分比的形式顯示內存使用情況。 [NET I/O]:網絡 I/O 數據。 [BLOCK I/O]:磁盤 I/O 數據。 [PIDS]:PID 號。
格式化輸出 docker stats --no-stream --format "table {{.Container}}\t{{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"

image.png
上面的命令中我們只輸出了 Name, CPUPerc 和 Memusage 三列。
下面是自定義的格式中可以使用的所有占位符: .Container 根據用戶指定的名稱顯示容器的名稱或 ID。 .Name 容器名稱。 .ID 容器 ID。 .CPUPerc CPU 使用率。 .MemUsage 內存使用量。 .NetIO 網絡 I/O。 .BlockIO 磁盤 I/O。 .MemPerc 內存使用率。 .PIDs PID 號。 有了這些信息我們就可以完全按照自己的需求或者是偏好來控制 docker stats 命令輸出的內容了。
4、日志分析方式: k8s日志查看 kubectl logs <pod-name> kubectl logs -f <pod-name> # 實時查看日志
kubectl logs -f test-huishi-server-6c68d8c769-5lf9z docker日志查看 docker logs da0072b10205
參考鏈接:https://www.jianshu.com/p/bd442ae73394
擴展閱讀 從kubectl top看K8S監控 https://www.jianshu.com/p/64230e3b6e6c
博文源地址:

浙公網安備 33010602011771號