安裝node-exporter元件,在k8s集群的master1節點操作
cat >node-export.yaml <#檢視node-exporter是否部署成功kubectl get pods -n monitor-sa通過node-exporter採集資料curl http://主機ip:9100/metrics顯示如下,看到pod的狀態都是running,說明部署成功
name ready status restarts age
node-exporter-9qpkd 1/1 running 0 89s
node-exporter-zqmnk 1/1 running 0 89s
#node-export預設的監聽埠是9100,可以看到當前主機獲取到的所有監控資料,擷取一部分,如下
1.建立namespace、sa賬號,在k8s集群的master節點操作
#建立乙個monitor-sa的命名空間
kubectl create ns monitor-sa
#建立乙個sa賬號
kubectl create serviceaccount monitor -n monitor-sa
#把sa賬號monitor通過clusterrolebing繫結到clusterrole上
kubectl create clusterrolebinding monitor-clusterrolebinding -n monitor-sa --clusterrole=cluster-admin --serviceaccount=monitor-sa:monitor
2.建立資料目錄
#在k8s集群的任何乙個node節點操作,因為我的k8s集群只有乙個node節點node1,所以我在node1上操作如下命令:
mkdir /data
chmod 777 /data/
3.安裝prometheus,以下步驟均在在k8s集群的master1節點操作
1)建立乙個configmap儲存卷,用來存放prometheus配置資訊
cat >prometheus-cfg.yaml <注意:通過上面命令生成的promtheus-cfg.yaml檔案會有一些問題,$1和$2這種變數在檔案裡沒有,需要在k8s的master1節點開啟promtheus-cfg.yaml檔案,手動把$1和$2這種變數寫進檔案裡,promtheus-cfg.yaml檔案需要手動修改部分如下:3)給prometheus pod建立乙個service
22行的replacement: ':9100'變成replacement: '$:9100'
42行的replacement: /api/v1/nodes//proxy/metrics/cadvisor變成
replacement: /api/v1/nodes/$/proxy/metrics/cadvisor
73行的replacement: 變成replacement: $1:$2
2)通過deployment部署prometheus
cat >prometheus-deploy.yaml <注意:在上面的prometheus-deploy.yaml檔案有個nodename字段,這個就是用來指定建立的這個prometheus的pod排程到哪個節點上,我們這裡讓nodename=node1,也即是讓pod排程到node1節點上,因為node1節點我們建立了資料目錄/data,所以大家記住:你在k8s集群的哪個節點建立/data,就讓pod排程到哪個節點。
#檢視prometheus是否部署成功
kubectl get pods -n monitor-sa
顯示如下,可看到pod狀態是running,說明prometheus部署成功
name ready status restarts age
node-exporter-9qpkd 1/1 running 0 76m
node-exporter-zqmnk 1/1 running 0 76m
prometheus-server-85dbc6c7f7-nsg94 1/1 running 0 6m7
cat > prometheus-svc.yaml << eof#檢視service在物理機對映的埠kubectl get svc -n monitor-sa---apiversion: v1
kind: service
metadata:
name: prometheus
namespace: monitor-sa
labels:
spec:
type: nodeport
ports:
- port: 9090
targetport: 9090
protocol: tcp
selector:
component: server
eof
顯示如下:
name type cluster-ip external-ip port(s) age通過上面可以看到service在宿主機上對映的埠是31043,這樣我們訪問k8s集群的master1節點的ip:31043,就可以訪問到prometheus的web ui介面了prometheus nodeport 10.96.45.93 9090:31043/tcp 50s
#訪問prometheus web ui介面
可看到如下頁面:
#點選頁面的status->targets,可看到如下,說明我們配置的服務發現可以正常採集資料
#為了每次修改配置檔案可以熱載入prometheus,也就是不停止prometheus,就可以使配置生效,如修改prometheus-cfg.yaml,想要使配置生效可用如下熱載入命令:
curl -x post
kubectl get pods -n monitor-sa -o wide | grep prometheus
顯示如下, 10.244.1.7就是prometheus的ip
prometheus-server-85dbc6c7f7-nsg94 1/1 running 0 29m 10.244.1.7 node#熱載入速度比較慢,可以暴力重啟prometheus,如修改上面的prometheus-cfg.yaml檔案之後,可執行如下強制刪除:kubectl delete -f prometheus-cfg.yaml
kubectl delete -f prometheus-deploy.yaml
注意:
線上最好熱載入,暴力刪除可能造成監控資料的丟失
k8s集群部署 docker部署k8s安裝篇
1 安裝docker 緊接著配置乙個穩定 stable 的倉庫 倉庫配置會儲存到 etc yum.repos.d docker ce.repo檔案中 yum config manager add repo 更新yum安裝的相關docke軟體包 安裝docker ce yum update y yum...
rke部署k8s集群
作業系統 centos7.6 核心版本 linux 3.10.0 957.el7.x86 64 kubernetes v1.13.5 docker版本 18.06.1 ce 你需要準備如下這些東西 這個鏈結,找你要的版本,本例為v0.2.1 這裡有cluster.yml檔案的樣例 ip角色 備註10...
k8s集群單機部署
一 安裝kubelet kubeadm 和kubectl 配置k8s的源 sudo touch etc apt sources.list.d kubernetes.list sudo echo deb kubernetes xenial main etc apt sources.list.d kub...