一、安装前说明
1.参考资料
以下内容参考自腾讯课堂付费课“Prometheus+Grafana搭建全方位的监控告警系统“,大家最好去买视频听一下
2.实验版本
本实验主要照着老师的视频做的记录(熟悉以后再研究一下装最新版本的),所需的版本信息如下:
docker:视频里老师用的是18.x,我用19.03.8好像也没有问题
k8s: 1.17.3
kubelet=1.17.3-00
kubectl=1.17.3-00
kubernetes-cni=0.8.7-00
kubeadm=1.17.3-00
各个image版本如下,可以事先从阿里云下载下来
#k8s系统image
registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy v1.17.3
registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager v1.17.3
registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver v1.17.3
registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler v1.17.3
registry.cn-hangzhou.aliyuncs.com/google_containers/coredns 1.6.5
registry.cn-hangzhou.aliyuncs.com/google_containers/etcd 3.4.3-0
registry.cn-hangzhou.aliyuncs.com/google_containers/pause 3.1
#calico系统image
calico/pod2daemon-flexvol v3.11.3
calico/cni v3.11.3
#kubernetes-dashboard image
k8s.gcr.io/kubernetes-dashboard-amd64 v1.10.1
registry.cn-hangzhou.aliyuncs.com/google_containers/kubernetes-dashboard-amd64 v1.10.1
#metrics image
k8s.gcr.io/addon-resizer 1.8.4
k8s.gcr.io/metrics-server-amd64
#prometheus image
prom/node-exporter v0.16.0
prom/prometheus v2.2.1
#grafana image
#k8s.gcr.io/heapster-grafana-amd64 v5.0.4
#other image
quay.io/coreos/kube-state-metrics v1.9.0
kubernetesui/metrics-scraper v1.0.0
二、安装步骤
1.安装kubernetes-dashboard界面
1) 安装过程
kubectl apply -f kubernetes-dashboard.yaml
由于kubernetes-dashboard.yaml里面的image: k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1访问不了
有两种解决方法:
方法1:(最简单)
在yaml文件中把它换成
image: registry.cn-hangzhou.aliyuncs.com/google_containers/kubernetes-dashboard-amd64:v1.10.1
方法2:
先下载image文件(注意在所有node节点上,通过kubectl get pod -o wide -n kube-system发现这个pod在node节点运行)
$ sudo docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kubernetes-dashboard-amd64:v1.10.1
然后为image打tag
$ sudo docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kubernetes-dashboard-amd64:v1.10.1 k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1
再安装dashboard
kubectl apply -f kubernetes-dashboard.yaml
方法3:
通过其他方法下载image文件,然后docker load image文件(注意在所有node节点上)
$ sudo docker load -i kubernetes-dashboard-amd64-v1.10.1.tar.gz
查看images的tag
$ sudo docker images
查看REPOSITORY为 kubernetes-dashboard-amd64的REPOSITORY:TAG
然后为image打tag
$ sudo docker tag source_tag k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1
其中source_tag为REPOSITORY:TAG
再安装dashboard
kubectl apply -f kubernetes-dashboard.yaml
2) 验证结果
$ kubectl get pods -n kube-system -o wide
查看pod STATUS状态是否均为Running,若是,说明组件正常
2.安装metrics监控插件
1) 安装过程
kubectl apply -f metrics.yaml
同样的,由于metrics.yaml里面的k8s.gcr.io/addon-resizer:1.8.4和k8s.gcr.io/metrics-server-amd64:v0.3.1访问不了,
把它换成了
image: registry.cn-hangzhou.aliyuncs.com/google_containers/addon-resizer:1.8.4
image: registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server-amd64:v0.3.1
2) 验证结果
$ kubectl get pods -n kube-system
查看pod STATUS状态是否均为Running,若是,说明组件正常
查看端口 ss -antupl |grep 10252
六、附录
1.几个ip:port的关系
集群外部访问k8s集群中pod应用,流量走向:
物理节点ip:port--->service ip:port-->pod ip:port
以32108端口应用为例
1)物理节点ip:port
$ifconfig
2)service ip:port
kubectl get svc -n kube-system -o wide
kube-controller NodePort 10.108.20.16 <none> 10252:32108/TCP 25m
物理节点ip:port访问测试:
$ curl 10.1.13.162:32108/metrics
既可以在master或者node节点上执行,也可以通过浏览器访问URL地址
service ip:port访问测试:
$ curl 10.108.20.16:10252/metrics
既可以在master或者node节点上执行,也可以通过浏览器访问URL地址
3)pod ip:port
$ kubectl get pod -n kube-system -o wide
kube-controller-manager-k8s-master 1/1 Running 5 5d7h 10.1.13.162
pod ip:port访问测试:
$ curl 10.1.13.162:32108/metrics
只能在master或者node节点上执行,不能通过浏览器访问URL地址