kubernets監控

Weave Scope 容器地圖
 
建立 Kubernetes 集羣並部署容器化應用只是第一步。一旦集羣運行起來,咱們須要確保一塊兒正常,全部必要組件就位並各司其職,有足夠的資源知足應用的需求。Kubernetes 是一個複雜系統,運維團隊須要有一套工具幫助他們獲知集羣的實時狀態,並爲故障排查提供及時和準確的數據支持。
 
Weave Scope 是 Docker 和 Kubernetes 可視化監控工具。Scope 提供了至上而下的集羣基礎設施和應用的完整視圖,用戶能夠輕鬆對分佈式的容器化應用進行實時監控和問題診斷。
 
Weave Scope 的最大特色是會自動生成一張 Docker 容器地圖,讓咱們可以直觀地理解、監控和控制容器。千言萬語不及一張圖,先感覺一下。
 
 

 

 
 
Weave Scope部署
 
1)進入到kubernetes目錄下找到scope.yml文件。
[root@cicd kubernetes]# ls
bash  ca         harbor-offline-installer-v1.4.0.tgz  image.tar.gz   kube-yunwei-197.tar.gz  sock-shop
bin   ca.tar.gz  image                                k8s197.tar.gz  scope.yaml

 

2)建立weave名稱空間node

[root@cicd kubernetes]# kubectl create namespace weave

web

2)安裝scope,執行以下命令:
#kubectl apply -f scope.yaml
 
 
部署成功後,有以下相關組件:
[root@cicd kubernetes]# kubectl get pod -n weave 
NAME                               READY     STATUS    RESTARTS   AGE
weave-scope-agent-4xw7b            1/1       Running   0          2h
weave-scope-agent-cll6f            1/1       Running   0          2h
weave-scope-agent-nfl8c            1/1       Running   0          2h
weave-scope-app-5969c9bc78-fmm4s   1/1       Running   0          2h
[root@cicd kubernetes]# kubectl get svc -n weave 
NAME              TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
weave-scope-app   NodePort   10.68.210.240   <none>        80:33274/TCP   2h

 注意port端口號,用來瀏覽器訪問。docker

  1. DaemonSet weave-scope-agent,集羣每一個節點上都會運行的 scope agent 程序,負責收集數據。
  2. Deployment weave-scope-app,scope 應用,從 agent 獲取數據,經過 Web UI 展現並與用戶交互。
  3. Service weave-scope-app,默認是 ClusterIP 類型,爲了方便已經過 kubectl edit 修改成 NodePort
 
使用weavescope
 
登錄weavescope
瀏覽器訪問 http://ip:33274/,Scope 默認顯示當前全部的Controller(Deployment、DaemonSet 等)。
 

 

 

拓撲結構

Scope 會自動構建應用和集羣的邏輯拓撲。好比點擊頂部 PODS,會顯示全部 Pod 以及 Pod 之間的依賴關係。

 

 同理點擊 HOSTS,會顯示各個節點之間的關係。
 
 

實時資源監控

能夠在 Scope 中查看資源的 CPU 和內存使用狀況。

 

支持圖,表,柱狀圖顯示
 
 

 

 

在線操做

Scope 還提供了便捷的在線操做功能,好比選中某個 Host,點擊 >_ 按鈕能夠直接在瀏覽器中打開節點的命令行終端:
 
 
點擊 Deployment 的 + 能夠執行 Scale Up 操做:
 
能夠 attach、restart、stop 容器,以及直接在 Scope 中排查問題:
 
詳細信息包括這麼幾部分:
Status:CPU、內存的實時使用狀況以及歷史曲線。
INFO:容器 image、啓動命令、狀態、網絡等信息。
如下幾項需拉動滾動條查看。
 

PROCESSES:容器中運行的進程。

ENVIRONMENT VARIABLES:環境變量。
DOCKER LABELS:容器啓動命令。
IMAGE:鏡像詳細信息。

在容器信息的上面還有一排操做按鈕。

上圖:左邊框爲atach按鈕,右邊框爲exec按鈕。一個是繼續進程,一個是重開終端。shell

attach 到容器啓動進程,至關於執行 docker container attach
打開shell,至關於執行docker container exec
重啓容器,至關於執行 docker container restart
暫停容器,至關於執行 docker container pause
關閉容器,至關於執行 docker container stop
 

強大的搜索功能

Scope 支持關鍵字搜索和定位資源。
 
還能夠進行條件搜索,好比查找和定位 cpu > 1% 的 Containers
 
Weave Scope 界面極其友好,操做簡潔流暢。
 
 
 
 
2、用 Heapster 監控集羣
Heapster介紹
 
Heapster 是 Kubernetes 原生的集羣監控方案。Heapster 以 Pod 的形式運行,它會自動發現集羣節點、從節點上的 Kubelet 獲取監控數據。Kubelet 則是從節點上的 cAdvisor 收集數據。
 
Heapster 將數據按照 Pod 進行分組,將它們存儲到預先配置的 backend 並進行可視化展現。Heapster 當前支持的 backend 有 InfluxDB(經過 Grafana 展現),Google Cloud Monitoring 等。Heapster 的總體架構以下圖所示:
 
Heapster 自己是一個 Kubernetes 應用,部署方法很簡單,以前章節中咱們實踐了由 Heapster、InfluxDB 和 Grafana 組成的監控方案。Kubelet 和 cAdvisor 是 Kubernetes 的自帶組件,無需額外部署。
 
 

 部署步驟:

1)查看docker容器,並進入下載有ansible組件的容器。
[root@cicd kubernetes]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
415b685b8ace        1acb4fd5df5b        "/bin/sh"           4 days ago          Up 4 days                               keen_noyce
22c236dd2666        1acb4fd5df5b        "/bin/sh"           4 days ago          Up 4 days                               eloquent_bhabha
[root@cicd kubernetes]# docker exec -it 415b685b8ace /bin/sh

 

2)進入以前配置的/etc/ansible/manifest/heapster目錄下,執行:
[root@cicd kubernetes]# docker exec -it 415b685b8ace /bin/sh
/ # cd /etc/ansible//etc/ansible # ls
01.prepare.yml      03.docker.yml       05.kube-node.yml    99.clean.yml        bin                 hosts               roles
02.etcd.yml         04.kube-master.yml  06.network.yml      ansible.cfg         example             manifests           tools
/etc/ansible # cd manifests/
/etc/ansible/manifests # ls
coredns    dashboard  efk        heapster   ingress    kubedns
/etc/ansible/manifests # cd heapster/
/etc/ansible/manifests/heapster # ls
grafana.yaml      heapster.yaml     influxdb-v1.1.1   influxdb-with-pv  influxdb.yaml
/etc/ansible/manifests/heapster # kubectl apply -f . 
 
3)查看kube-system裏的pod狀態和service狀態
/etc/ansible/manifests/heapster # kubectl get pod -n kube-system  -o wide
NAME                                       READY     STATUS    RESTARTS   AGE       IP               NODE
calico-kube-controllers-754c88ccc8-fm9kn   1/1       Running   0          4d        192.168.253.11   192.168.253.11
calico-node-62wzk                          2/2       Running   0          4d        192.168.253.14   192.168.253.14
calico-node-lszzj                          2/2       Running   6          4d        192.168.253.10   192.168.253.10
calico-node-nvtwd                          2/2       Running   0          4d        192.168.253.11   192.168.253.11
coredns-6ff7588dc6-62nnv                   1/1       Running   0          9h        172.20.104.44    192.168.253.11
coredns-6ff7588dc6-f6d4z                   1/1       Running   147        4d        172.20.104.1     192.168.253.11 heapster-7f8bf9bc46-l8qv5                  1/1       Running   0          3h        172.20.104.60    192.168.253.11
kubernetes-dashboard-545b66db97-mmt6p      1/1       Running   0          9h        172.20.104.43    192.168.253.11
monitoring-grafana-64747d765f-rb59j        1/1       Running   0          3h        172.20.135.23    192.168.253.10
monitoring-influxdb-565ff5f9b6-m99z8       1/1       Running   0          3h        172.20.135.21    192.168.253.10

/etc/ansible/manifests/heapster # kubectl get svc -n kube-system -o wide NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR coredns ClusterIP 10.68.0.2 <none> 53/UDP,53/TCP 4d k8s-app=coredns heapster ClusterIP 10.68.198.107 <none> 80/TCP 3h k8s-app=heapster kubernetes-dashboard NodePort 10.68.6.114 <none> 443:37107/TCP 4d k8s-app=kubernetes-dashboard monitoring-grafana ClusterIP 10.68.59.90 <none> 80/TCP 3h k8s-app=grafana monitoring-influxdb ClusterIP 10.68.11.36 <none> 8086/TCP 3h k8s-app=influxdb

 

4)生成集羣連接地址
/etc/ansible/manifests/heapster # kubectl cluster-info
Kubernetes master is running at https://192.168.253.14:6443
CoreDNS is running at https://192.168.253.14:6443/api/v1/namespaces/kube-system/services/coredns:dns/proxy
kubernetes-dashboard is running at https://192.168.253.14:6443/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy
monitoring-grafana is running at https://192.168.253.14:6443/api/v1/namespaces/kube-system/services/monitoring-grafana/proxy

 

並打開瀏覽器訪問。api

 

 

 
 
 若是須要下載grafana
 
相關文章
相關標籤/搜索