kubernetes組件


kubernetes組件

@(馬克飛象)[k8s]


組件

kubernetes除了必備的dns和網絡組件外,官方推出大量的cluster-monitoring,dashboard,fluentd-elasticsearch,node-problem-detector,registry

官方提供的大部分組件,都以NodePort暴露服務,並且只允許在master節點上

heapster

k8s的監控組件,自動伸縮與及Dashboard 都依賴與它.

cd /data
git clone https://github.com/kubernetes/heapster.git
kubectl apply -f /data/heapster/deploy/kube-config/influxdb/

influxdb 默認沒有配置數據持久化, 可以結合各自的數據持久化方案進行部署,以便保留監控歷史

安裝完heapster組件后,可以便捷使用kubectl top node,kubectl top pod 列出高負載的資源

kubectl top node -n kube-system  
NAME           CPU(cores)   CPU%      MEMORY(bytes)   MEMORY%   
10-8-44-35     162m         4%        1045Mi          13%       
10-8-50-182    77m          1%        1132Mi          14%       
10-8-113-246   156m         3%        674Mi           8%        
10-8-36-34     166m         4%        904Mi           11%
kubectl top pod -n kube-system   
NAME                                   CPU(cores)   MEMORY(bytes)   
kube-dns-2924299975-363jm              1m           32Mi            
kube-apiserver-10-8-113-246            6m           84Mi            
dummy-2088944543-05z36                 0m           0Mi             
kube-proxy-mcb3t                       18m          18Mi            
calico-policy-controller-shv0f         4m           16Mi            
canal-node-rc2t6                       2m           57Mi        

dashboard

由kubernetes的UI演變而來, 目前已經集成監控展示與日常的創建與刪除操作, 另一方面,可以通過ui界面來學習kubernetes的使用,認識常用的配置類型
https://github.com/kubernetes/dashboard#kubernetes-dashboard

kubectl get pods --all-namespaces | grep dashboard
kubectl get po,svc --all-namespaces | grep dashboard    
kube-system   po/kubernetes-dashboard-3095304083-ltq8k   1/1       Running   0          53s
kube-system   svc/kubernetes-dashboard   10.105.98.204    <nodes>       80:32624/TCP    53s

通過10.105.98.204 進行訪問

node-problem-detector

node經常會遇到以下問題:

  • 硬件問題: cpu 內存 磁盤
  • 內核問題: 內核死鎖, 文件系統損壞
  • 容器問題: 守護進程無響應

kubernetes集群管理對node的健康狀態是無法感知的, pod依舊會調度到有問題的node上, 通過DaemonSet部署node-problem-detector, 向apiserver上報node的狀態信息,使node的健康狀態對上游管理可見,pod不會再調度到有異常的node上.

https://github.com/kubernetes/node-problem-detector

wget https://raw.githubusercontent.com/kubernetes/node-problem-detector/master/config/kernel-monitor.json
mkdir config
mv kernel-monitor.json config/
kubectl create configmap node-problem-detector-config --from-file=config/ -n kube-system
wget https://raw.githubusercontent.com/kubernetes/node-problem-detector/master/node-problem-detector.yaml
kubectl apply -f node-problem-detector.yaml -n kube-system

DNS Horizontal Autoscaler

根據apiserver獲取集群的狀態信息, 實現dns服務的水平擴展, 有助於提高dns的服務能力.

kubectl apply -f https://raw.githubusercontent.com/kubernetes/kubernetes/master/cluster/addons/dns-horizontal-autoscaler/dns-horizontal-autoscaler.yaml

fluentd-elasticsearch

fluentd-elasticsearch 是kubernetes 官方提供的容器日志收集方案, 個人也認為,這是目前最好的面向kubernetes日志方案.官網的版本太舊,我制作了一個最新版本的, 只收集容器的日志.

git clone https://github.com/caiwenhao/kube-addons.git
cd kube-addons/fluentd-elasticsearch
kubectl apply -f es-deploy.yaml -f kibana-deploy.yaml -f es-deploy.yaml 
kubectl label node 10-8-50-182 alpha.kubernetes.io/fluentd-ds-ready=true
  1. 通過elasticsearch-cloud-kubernetes,實現es在k8s集群上的部署.
  2. fluentd 的插件fluent-plugin-kubernetes_metadata_filter 通過apiserver,當pod創建的時候,建立日志目錄映射關系, 並解析kubernetes日志格式.

進一步優化

把fluent.conf放入configMap

kubectl create configmap fluent  --from-file=./fluent.conf -n kube-system


免責聲明!

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



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