目錄
基于Prometheus監(jiān)控Kubernetes集群安裝部署
一、環(huán)境準(zhǔn)備
二、部署kubernetes集群
三、部署Prometheus監(jiān)控平臺
四、部署Grafana服務(wù)
五、grafana? web操作
基于Prometheus監(jiān)控Kubernetes集群安裝部署
一、環(huán)境準(zhǔn)備
IP地址 |
主機(jī)名 |
組件 |
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 |
注意:所有主機(jī)配置推薦CPU:2C+ ?Memory:2G+
項(xiàng)目拓?fù)?/p>
?
1、主機(jī)初始化配置
所有主機(jī)配置禁用防火墻和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、配置主機(jī)名并綁定hosts,不同主機(jī)名稱不同
[root@localhost ~]# hostname k8s-master
[root@localhost ~]# bash
[root@k8s-master ~]# cat << EOF >> /etc/hosts
192.168.100.131 k8s-master
192.168.100.132 k8s-node01
192.168.100.133 k8s-node02
EOF
[root@localhost ~]# hostname k8s-node01
[root@k8s-node01 ~]#?cat?/etc/hosts
[root@localhost ~]# hostname k8s-node02
[root@k8s-node02 ~]#cat?/etc/hosts
?
3、主機(jī)配置初始化
[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環(huán)境
1)三臺主機(jī)上分別部署 Docker 環(huán)境,因?yàn)?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 時(shí),推薦使用阿里的 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)鏡像加速器(所有主機(jī)配置)
[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、組件介紹
三個(gè)節(jié)點(diǎn)都需要安裝下面三個(gè)組件
kubeadm:安裝工具,使所有的組件都會以容器的方式運(yùn)行
kubectl:客戶端連接K8S API工具
kubelet:運(yùn)行在node節(jié)點(diǎn),用來啟動容器的工具
2、配置阿里云yum源
使用 YUM 方式安裝 Kubernetes時(shí),推薦使用阿里的 YUM 源。
[root@k8s-master ~]# ls /etc/yum.repos.d/
[root@k8s-master ~]# cat > /etc/yum.repos.d/kubernetes.repo
?
3、安裝kubelet kubeadm kubectl
所有主機(jī)配置
[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 方式是無法啟動的,需要加入節(jié)點(diǎn)或初始化為 master 后才可啟動成功。
4、配置init-config.yaml
????????Kubeadm 提供了很多配置項(xiàng),Kubeadm 配置在 Kubernetes 集群中是存儲在ConfigMap 中的,也可將這些配置寫入配置文件,方便管理復(fù)雜的配置項(xiàng)。Kubeadm 配內(nèi)容是通過 kubeadm config 命令寫入配置文件的。
????????在master節(jié)點(diǎn)安裝,master 定于為192.168.100.131,通過如下指令創(chuàng)建默認(rèn)的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節(jié)點(diǎn)
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節(jié)點(diǎn)
[root@k8s-master ~]# kubeadm init --config=init-config.yaml //初始化安裝K8S
?
3)根據(jù)提示操作
????????kubectl 默認(rèn)會在執(zhí)行的用戶家目錄下面的.kube 目錄下尋找config 文件。這里是將在初始化時(shí)[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 通過初始化安裝是不包括網(wǎng)絡(luò)插件的,也就是說初始化之后是不具備相關(guān)網(wǎng)絡(luò)功能的,比如 k8s-master 節(jié)點(diǎn)上查看節(jié)點(diǎn)信息都是“Not Ready”狀態(tài)、Pod 的 CoreDNS無法提供服務(wù)等。
?
6、安裝node節(jié)點(diǎn)
1)根據(jù)master安裝時(shí)的提示信息
[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
?
????????前面已經(jīng)提到,在初始化 k8s-master 時(shí)并沒有網(wǎng)絡(luò)相關(guān)配置,所以無法跟 node 節(jié)點(diǎn)通信,因此狀態(tài)都是“NotReady”。但是通過 kubeadm join 加入的 node 節(jié)點(diǎn)已經(jīng)在k8s-master 上可以看到。
7、安裝flannel
Master 節(jié)點(diǎn)NotReady 的原因就是因?yàn)闆]有使用任何的網(wǎng)絡(luò)插件,此時(shí)Node 和Master的連接還不正常。目前最流行的Kubernetes 網(wǎng)絡(luò)插件有Flannel、Calico、Canal、Weave 這里選擇使用flannel。
所有主機(jī):
master上傳kube-flannel.yml,所有主機(jī)上傳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主機(jī)配置:
[root@k8s-master ~]# kubectl apply -f kube-flannel.yml
[root@k8s-master ~]# kubectl get nodes
[root@k8s-master ~]# kubectl get pods -n kube-system
?
已經(jīng)是ready狀態(tài)
8、部署測試應(yīng)用
1)所有node主機(jī)導(dǎo)入測試鏡像
[root@k8s-master?~]# docker pull??nginx
?
2)在Kubernetes集群中創(chuàng)建一個(gè)pod,驗(yàn)證是否正常運(yùn)行。
[root@k8s-master ~]# mkdir demo
[root@k8s-master ~]# cd demo
[root@k8s-master demo]# vim nginx-deployment.yaml
????????創(chuàng)建完 Deployment 的資源清單之后,使用 create 執(zhí)行資源清單來創(chuàng)建容器。通過 get pods 可以查看到 Pod 容器資源已經(jīng)自動創(chuàng)建完成。
[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)創(chuàng)建Service資源清單
????????在創(chuàng)建的 nginx-service 資源清單中,定義名稱為 nginx-service 的 Service、標(biāo)簽選擇器為 app: nginx、type 為 NodePort 指明外部流量可以訪問內(nèi)部容器。在 ports 中定義暴露的端口庫號列表,對外暴露訪問的端口是 80,容器內(nèi)部的端口也是 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監(jiān)控平臺
1、準(zhǔn)備Prometheus相關(guān)YAML文件
在master節(jié)點(diǎn)/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)部署守護(hù)進(jìn)程
[root@k8s-master pgmonitor]# cd k8s-prometheus-grafana-master/
[root@k8s-master k8s-prometheus-grafana-master]# kubectl create -f node-exporter.yaml
2)部署其他yaml文件
進(jìn)入/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狀態(tài)
[root@k8s-master prometheus]# kubectl get pods -n kube-system
稍等一會,再次查看!
[root@k8s-master prometheus]# kubectl get pods -n kube-system
?
四、部署Grafana服務(wù)
1、部署Grafana相關(guān)yaml文件
進(jìn)入/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狀態(tài)
[root@k8s-master grafana]# kubectl get pods -n
2、配置Grafana數(shù)據(jù)源
1)查看grafana的端口
[root@k8s-master grafana]# kubectl get svc -n
?
五、grafana? web操作
2)通過瀏覽器訪問
grafana,http://[masterIP]:[grafana端口]
例如:http://192.168.100.131:30503,默認(rèn)的用戶名和密碼:admin/admin
?
3)設(shè)置DataSource
設(shè)置顯示數(shù)據(jù)的模版
?
輸入315并移除光標(biāo),等一會兒即可進(jìn)入下一個(gè)頁面
?
選擇自己定義的數(shù)據(jù)源名稱
?
文章來源:http://www.zghlxwxcb.cn/news/detail-654204.html
至此已經(jīng)利用Prometheus+Granfana監(jiān)控了Kubernetes平臺。文章來源地址http://www.zghlxwxcb.cn/news/detail-654204.html
到了這里,關(guān)于【k8s】基于Prometheus監(jiān)控Kubernetes集群安裝部署的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!