【k8s】基于Prometheus監控Kubernetes集群安裝部署

目錄

基于Prometheus監控Kubernetes集群安裝部署

一、環境準備

二、部署kubernetes集群

三、部署Prometheus監控平臺

四、部署Grafana服務

五、grafana? web操作


基于Prometheus監控Kubernetes集群安裝部署

一、環境準備

IP地址

主機名

組件

192.168.100.131

k8s-master

kubeadm、kubelet、kubectl、docker-ce

192.168.100.132

k8s-node01

kubeadm、kubelet、kubectl、docker-ce

192.168.100.133

k8s-node02

kubeadm、kubelet、kubectl、docker-ce

注意:所有主機配置推薦CPU:2C+ ?Memory:2G+

項目拓撲

?

1主機初始化配置

所有主機配置禁用防火墻和selinux

[root@localhost ~]# setenforce 0[root@localhost ~]# iptables -F[root@localhost ~]# systemctl stop firewalld[root@localhost ~]# systemctl disable firewalld[root@localhost ~]# systemctl stop NetworkManager[root@localhost ~]# systemctl disable NetworkManager[root@localhost ~]# sed -i '/^SELINUX=/s/enforcing/disabled/' /etc/selinux/config

?

2、配置主機名并綁定hosts,不同主機名稱不同

[root@localhost ~]# hostname k8s-master[root@localhost ~]# bash[root@k8s-master ~]# cat << EOF >> /etc/hosts192.168.100.131 k8s-master192.168.100.132 k8s-node01192.168.100.133 k8s-node02EOF

[root@localhost ~]# hostname k8s-node01

[root@k8s-node01 ~]#?cat?/etc/hosts

[root@localhost ~]# hostname k8s-node02

[root@k8s-node02 ~]#cat?/etc/hosts

?

3、主機配置初始化

[root@k8s-master ~]# yum -y install vim wget net-tools lrzsz

[root@k8s-master ~]# swapoff -a

[root@k8s-master ~]# sed -i '/swap/s/^/#/' /etc/fstab

[root@k8s-master ~]# cat << EOF >> /etc/sysctl.conf

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

EOF

[root@k8s-master ~]# modprobe br_netfilter

[root@k8s-master ~]# sysctl -p

?

4、部署docker環境

1)三臺主機上分別部署 Docker 環境,因為 Kubernetes 對容器的編排需要 Docker 的支持。

[root@k8s-master ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

[root@k8s-master ~]# yum install -y yum-utils device-mapper-persistent-data lvm2

2)使用 YUM 方式安裝 Docker 時,推薦使用阿里的 YUM 源。

[root@k8s-master ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3)清除緩存

[root@k8s-master ~]# yum clean all && yum makecache fast

4)啟動docker

[root@k8s-master ~]# yum -y install docker-ce

[root@k8s-master ~]# systemctl start docker

[root@k8s-master ~]# systemctl enable docker

?

5)鏡像加速器(所有主機配置)

[root@k8s-master ~]# cat << END > /etc/docker/daemon.json

{ ????"registry-mirrors":[ "https://nyakyfun.mirror.aliyuncs.com" ]

}

END

6)重啟docker

[root@k8s-master ~]# systemctl daemon-reload

[root@k8s-master ~]# systemctl restart docker

?

二、部署kubernetes集群

1、組件介紹

三個節點都需要安裝下面三個組件

kubeadm:安裝工具,使所有的組件都會以容器的方式運行

kubectl:客戶端連接K8S API工具

kubelet:運行在node節點,用來啟動容器的工具

2、配置阿里云yum源

使用 YUM 方式安裝 Kubernetes時,推薦使用阿里的 YUM 源。

[root@k8s-master ~]# ls /etc/yum.repos.d/

[root@k8s-master ~]# cat > /etc/yum.repos.d/kubernetes.repo

?

3、安裝kubelet kubeadm kubectl

所有主機配置

[root@k8s-master ~]# yum install -y kubelet-1.20.0?kubeadm-1.20.0?kubectl-1.20.0

[root@k8s-master ~]# systemctl enable kubelet

[root@k8s-master ~]# kubectl version

????????kubelet 剛安裝完成后,通過 systemctl start kubelet 方式是無法啟動的,需要加入節點或初始化為 master 后才可啟動成功。

4、配置init-config.yaml

????????Kubeadm 提供了很多配置項,Kubeadm 配置在 Kubernetes 集群中是存儲在ConfigMap 中的,也可將這些配置寫入配置文件,方便管理復雜的配置項。Kubeadm 配內容是通過 kubeadm config 命令寫入配置文件的。

????????在master節點安裝,master 定于為192.168.100.131,通過如下指令創建默認的init-config.yaml文件:

[root@k8s-master ~]# kubeadm config print init-defaults > init-config.yaml

?

init-config.yaml配置

[root@k8s-master ~]# cat init-config.yaml

?

5、安裝master節點

1)拉取所需鏡像

[root@k8s-master ~]# kubeadm config images list --config init-config.yaml

[root@k8s-master ~]# kubeadm config images pull?--config init-config.yaml

?

2)安裝matser節點

[root@k8s-master ~]# kubeadm init --config=init-config.yaml //初始化安裝K8S

?

3)根據提示操作

????????kubectl 默認會在執行的用戶家目錄下面的.kube 目錄下尋找config 文件。這里是將在初始化時[kubeconfig]步驟生成的admin.conf 拷貝到.kube/config

[root@k8s-master ~]# mkdir -p $HOME/.kube

[root@k8s-master ~]# cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

[root@k8s-master ~]# chown $(id -u):$(id -g) $HOME/.kube/config

????????Kubeadm 通過初始化安裝是不包括網絡插件的,也就是說初始化之后是不具備相關網絡功能的,比如 k8s-master 節點上查看節點信息都是“Not Ready”狀態、Pod 的 CoreDNS無法提供服務等。

?

6、安裝node節點

1)根據master安裝時的提示信息

[root@k8s-node01 ~]# kubeadm join 192.168.100.131:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:78bdd0f01660f4e84355b70aa8807cf1d0d6325b0b28502b29c241563e93b4ae

[root@k8s-master ~]# kubectl get nodes

[root@k8s-node02 ~]# kubeadm join 192.168.100.131:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:78bdd0f01660f4e84355b70aa8807cf1d0d6325b0b28502b29c241563e93b4ae

?

Master操作:

[root@k8s-master ~]# kubectl get nodes

?

????????前面已經提到,在初始化 k8s-master 時并沒有網絡相關配置,所以無法跟 node 節點通信,因此狀態都是“NotReady”。但是通過 kubeadm join 加入的 node 節點已經在k8s-master 上可以看到。

7、安裝flannel

Master 節點NotReady 的原因就是因為沒有使用任何的網絡插件,此時Node 和Master的連接還不正常。目前最流行的Kubernetes 網絡插件有Flannel、Calico、Canal、Weave 這里選擇使用flannel。

所有主機:

master上傳kube-flannel.yml,所有主機上傳flannel_v0.12.0-amd64.tar,cni-plugins-linux-amd64-v0.8.6.tgz

[root@k8s-master ~]# docker load < flannel_v0.12.0-amd64.tar

?

上傳插件:

[root@k8s-master ~]# tar xf cni-plugins-linux-amd64-v0.8.6.tgz

[root@k8s-master ~]# cp flannel /opt/cni/bin/

?

master上傳kube-flannel.yml

master主機配置:

[root@k8s-master ~]# kubectl apply -f kube-flannel.yml

[root@k8s-master ~]# kubectl get nodes

[root@k8s-master ~]# kubectl get pods -n kube-system

?

已經是ready狀態

8、部署測試應用

1)所有node主機導入測試鏡像

[root@k8s-master?~]# docker pull??nginx

?

2)在Kubernetes集群中創建一個pod,驗證是否正常運行。

[root@k8s-master ~]# mkdir demo

[root@k8s-master ~]# cd demo

[root@k8s-master demo]# vim nginx-deployment.yaml

????????創建完 Deployment 的資源清單之后,使用 create 執行資源清單來創建容器。通過 get pods 可以查看到 Pod 容器資源已經自動創建完成。

[root@k8s-master demo]# kubectl create -f nginx-deployment.yaml

[root@k8s-master demo]# kubectl get pods

[root@k8s-master demo]# kubectl get pods -o wide

?

3)創建Service資源清單

????????在創建的 nginx-service 資源清單中,定義名稱為 nginx-service 的 Service、標簽選擇器為 app: nginx、type 為 NodePort 指明外部流量可以訪問內部容器。在 ports 中定義暴露的端口庫號列表,對外暴露訪問的端口是 80,容器內部的端口也是 80。

[root@k8s-master demo]# vim nginx-service.yaml

[root@k8s-master1 demo]# kubectl create -f nginx-service.yaml

[root@k8s-master demo]# kubectl get svc

?

.訪問測試

[root@k8s-master demo]# curl 10.101.253.90:80

?

通過瀏覽器訪問nginx:http://192.168.100.131:31367?

?

三、部署Prometheus監控平臺

1、準備Prometheus相關YAML文件

在master節點/opt目錄下新建pgmonitor目錄

[root@k8s-master ~]# mkdir pgmonitor

[root@k8s-master ~]# cd pgmonitor/

將下載yaml包上傳至/opt/pgmonitor目錄并解壓

[root@k8s-master ~]# unzip k8s-prometheus-grafana-master.zip

?

2、部署prometheus

1)部署守護進程

[root@k8s-master pgmonitor]# cd k8s-prometheus-grafana-master/

[root@k8s-master k8s-prometheus-grafana-master]# kubectl create -f node-exporter.yaml

2)部署其他yaml文件

進入/pgmonitor/k8s-prometheus-grafana-master/prometheus目錄

[root@k8s-master k8s-prometheus-grafana-master]# cd prometheus

3)部署rbac

[root@k8s-master prometheus]# kubectl create -f rbac-setup.yaml

4)部署configmap.yaml

[root@k8s-master prometheus]# kubectl create -f configmap.yaml

5)部署prometheus.deploy.yml

[root@k8s-master prometheus]# kubectl create -f prometheus.deploy.yml

6)部署prometheus.svc.yml

[root@k8s-master prometheus]# kubectl create -f prometheus.svc.yml

7)查看prometheus狀態

[root@k8s-master prometheus]# kubectl get pods -n kube-system

稍等一會,再次查看!

[root@k8s-master prometheus]# kubectl get pods -n kube-system

?

四、部署Grafana服務

1、部署Grafana相關yaml文件

進入/opt/pgmonitor/k8s-prometheus-grafana-master/grafana目錄

[root@k8s-master prometheus]# cd ../grafana/

1)部署grafana-deploy.yaml

[root@k8s-master grafana]# kubectl create -f grafana-deploy.yaml

2)部署grafana-svc.yaml

[root@k8s-master grafana]# kubectl create -f grafana-svc.yaml

3)部署grafana-ing.yaml

[root@k8s-master grafana]# kubectl create -f grafana-ing.yaml

4)查看Grafana狀態

[root@k8s-master grafana]# kubectl get pods -n

2、配置Grafana數據源

1)查看grafana的端口

[root@k8s-master grafana]# kubectl get svc -n

?

五、grafana? web操作

2)通過瀏覽器訪問

grafana,http://[masterIP]:[grafana端口]

例如:http://192.168.100.131:30503,默認的用戶名和密碼:admin/admin

?

3)設置DataSource

設置顯示數據的模版

?

輸入315并移除光標,等一會兒即可進入下一個頁面

?

選擇自己定義的數據源名稱

?

至此已經利用Prometheus+Granfana監控了Kubernetes平臺。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/40075.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/40075.shtml
英文地址,請注明出處:http://en.pswp.cn/news/40075.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

時序預測 | MATLAB實現WOA-CNN-GRU鯨魚算法優化卷積門控循環單元時間序列預測

時序預測 | MATLAB實現WOA-CNN-GRU鯨魚算法優化卷積門控循環單元時間序列預測 目錄 時序預測 | MATLAB實現WOA-CNN-GRU鯨魚算法優化卷積門控循環單元時間序列預測預測效果基本介紹模型描述程序設計參考資料 預測效果 基本介紹 時序預測 | MATLAB實現WOA-CNN-GRU鯨魚算法優化卷積…

PrefetchParameters

Windows XP重新設置預讀對象是允許的。具體方法是&#xff1a;打開注冊表編輯器&#xff0c;依次展開 HKEY_LOCAL_MACHINE&#xff3c;SYSTEM&#xff3c;CurrentControlSet&#xff3c;Control&#xff3c;Session Manager&#xff3c;Memory Management&#xff3c;PrefetchP…

基于LVQ神經網絡的人臉朝向識別

1案例背景 1.1人臉識別概述 人臉識別作為一個復雜的模式識別問題,近年來受到了廣泛的關注,識別領域的各種方法在這個問題上各顯所長,而且發展出了許多新方法,大大豐富和拓寬了模式識別的方向。人臉識別、檢測,跟蹤、特征定位等技術近年來一直是研究的熱點。人臉識別是人臉應用…

【制作npm包1】申請npm賬號、認識個人包和組織包

概述 在開發當中經常有一種現象&#xff0c;重復代碼寫了N多遍&#xff0c;再次寫同樣的邏輯就再次翻查以前的代碼邏輯。效率低下且容易出錯&#xff0c;封裝一個npm包的價值也不僅僅是給別人用&#xff0c;封裝一套屬于自己或者本部門的npm包也是相當有必要。 也許經常看到一…

RabbitMQ的5種消息隊列

RabbitMQ的5種消息隊列 1、七種模式介紹與應用場景 1.1 簡單模式(Hello World) 一個生產者對應一個消費者&#xff0c;RabbitMQ 相當于一個消息代理&#xff0c;負責將 A 的消息轉發給 B。 應用場景&#xff1a;將發送的電子郵件放到消息隊列&#xff0c;然后郵件服務在隊列…

【JS學習】Object.assign 用法介紹

Object.assign 是ES6中的一個方法。該方法能夠實現對象的淺復制以及對象合并。Object.assign 并不會修改目標對象本身&#xff0c;而是返回一個新的對象&#xff0c;其中包含了所有源對象的屬性。 例1 2個對象合并 const target { a: 1, b: 2 }; const source { b: 3, c: 4…

【git】初次使用git上傳代碼到github遠程倉庫

目錄 0.前言1.新建代碼庫2.添加SSH公鑰2.1 前置準備2.2 Git 基本信息設置2.3 添加SSH Key 3.本地倉庫上傳到github3.1 建立本地倉庫并初始化3.2 初始化倉庫3.3 建立本地與github上新建項目鏈接3.4 同步github新建項目到本地3.5 添加本地文件到緩存區3.6 為上傳文件添加注釋3.7 …

注冊中心Eureka和Nacos,以及負載均衡Ribbon

1.初識微服務 1.1.什么是微服務 微服務&#xff0c;就是把服務拆分成為若干個服務&#xff0c;降低服務之間的耦合度&#xff0c;提供服務的獨立性和靈活性。做到高內聚&#xff0c;低耦合。 1.2.單體架構和微服務架構的區別&#xff1a; 單體架構&#xff1a;簡單方便&#…

TS基本語法

一、安裝 npm install -g typescript 或者 cnpm install -g typescript 或者 yarnlobal add typescript二、運行 tsc xxxx.ts注意&#xff1a;如果電腦上面沒有安裝過cnpm&#xff0c;請先安裝cnpm npm install -g cnpm --registryhttps://registry.npm.taobao.org注意&…

數字圖像處理-AWB跳變

1、自動白平衡&#xff08;AWB&#xff09;算法是相機中常用的圖像處理技術&#xff0c;它能夠自動調整圖像中的白平衡&#xff0c;使得圖像中的顏色更加真實、自然。然而&#xff0c;在實際應用中&#xff0c;AWB算法也存在著一些問題&#xff0c;例如AWB跳變&#xff08;Whit…

DevExpress WinForms數據編輯器組件,提供豐富的數據輸入樣式!(一)

DevExpress WinForms超過80個高影響力的WinForms編輯器和多用途控件&#xff0c;從屏蔽數據輸入和內置數據驗證到HTML格式化&#xff0c;DevExpress數據編輯庫提供了無與倫比的數據編輯選項&#xff0c;包括用于獨立數據編輯或用于容器控件(如Grid, TreeList和Ribbon)的單元格。…

云原生 envoy xDS 動態配置 java控制平面開發 支持restful grpc實現 EDS 動態endpoint配置

envoy xDS 動態配置 java控制平面開發 支持restful grpc 動態endpoint配置 大綱 基礎概念Envoy 動態配置API配置方式動靜結合的配置方式純動態配置方式實戰 基礎概念 Envoy 的強大功能之一是支持動態配置&#xff0c;當使用動態配置時&#xff0c;我們不需要重新啟動 Envoy…

spring boot 整合mongodb

1、安裝依賴 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId></dependency>2、配置數據庫連接 spring:data:mongodb:host: localhostport: 27017username: xxxxxxp…

2682. 找出轉圈游戲輸家

題目描述&#xff1a; n 個朋友在玩游戲。這些朋友坐成一個圈&#xff0c;按 順時針方向 從 1 到 n 編號。從第 i 個朋友的位置開始順時針移動 1 步會到達第 (i 1) 個朋友的位置&#xff08;1 < i < n&#xff09;&#xff0c;而從第 n 個朋友的位置開始順時針移動 1 步…

“華為杯”研究生數學建模競賽2018年-【華為杯】F題:中轉航班調度:從 MILP 模型到啟發式算法

目錄 摘 要 1 問題描述 2 模型假設 3 符號定義及數據預處理 3.1 符號定義

【廣州華銳視點】帆船航行VR模擬實操系統

帆船航行VR模擬實操系統由廣州華銳視點開發&#xff0c;是一種創新的教學工具&#xff0c;它利用虛擬現實技術&#xff0c;為學生提供了一個沉浸式的學習環境。通過這種系統&#xff0c;學生可以在虛擬的環境中進行帆船航行的實訓&#xff0c;從而更好地理解和掌握帆船航行的技…

Maven(四)常用命令大全

目錄 一、mvn 命令參數二、mvn 插件命令1.介紹2.查看插件的使用文檔3.常用的插件命令 官網地址&#xff1a; https://maven.apache.org/官方插件清單&#xff1a; https://maven.apache.org/plugins/index.html Maven 是一個強大的構建工具&#xff0c;它提供了許多命令來進行項…

使用Python統計字符內容的占比

說明&#xff1a;如果有自己動手做過字符動畫&#xff0c;會知道字符動畫的“靈動性”核心在于使用的字符集。 簡單來說&#xff0c;動畫轉為字符動畫&#xff0c;原理是將動畫轉為灰階圖&#xff0c;灰度范圍是0~255&#xff0c;然后將對應灰度的像素點轉為對應比值的字符。這…

linux github 倉庫管理常用操作

linux 的常用操作 linux 本地 ssh驗證連接github賬號本地倉庫連接遠程私有倉庫push/pull操作 Connecting to Github with ssh git local configuration If you are using git for the first time, configure the user name and email in the device. git config --global u…

R語言ggplot2 | R語言繪制物種組成面積圖(三)

&#x1f4cb;文章目錄 面積圖簡介準備數據集加載數據集數據處理數據可視化 利用R語言繪制物種組成圖。本文以堆疊面積圖的方式與大家分享。 面積圖簡介 面積圖又叫區域圖。它是在折線圖的基礎之上形成的, 它將折線圖中折線與自變量坐標軸之間的區域使用顏色或者紋理填充&…