目录
k8s有一个资源控制器叫做 Horizontal Pod Autoscaling 简称 HPA 。它可以根据当前pod的资源使用率去对副本做扩缩容。但是这个组件在1.12版本被移除了。
Horizontal Pod Autoscaling
应用的资源使用率通常都有高峰和低谷的时候,如何削峰填谷,提高集群的整体资源利用率,让service中的Pod 个数自动调整呢?这就有赖于Horizontal Pod Autoscaling了,顾名思义,使Pod水平自动缩放
- MetricServer :是kubernetes集群资源使用情况的聚合器,收集数据给kubernetes集群内使用,如kubectl,hpa,scheduler等。
- PrometheusOperator :是一个系统监测和警报工具箱,用来存储监控数据。
- NodeExporter :用于各node的关键度量指标状态数据。
- KubeStateMetrics :收集kubernetes集群内资源对象数据,制定告警规则。
- Prometheus :采用pull方式收集apiserver,scheduler,controller-manager,kubelet组件数据,通过http协议传输。
- Grafana :是可视化数据统计和监控平台。
如果连不上github可以去改一下host,然后再去克隆:
echo 140.82.112.3 github.com >> /etc/hosts
git clone https://github.com/coreos/kube-prometheus.git

cd kube-prometheus/manifests/
修改 grafana-service.yaml 文件,使用 nodepode 方式访问 grafana :
vim grafana-service.yaml
- apiVersion: v1
- kind: Service
- metadata:
- labels:
- app.kubernetes.io/component: grafana
- app.kubernetes.io/name: grafana
- app.kubernetes.io/part-of: kube-prometheus
- app.kubernetes.io/version: 9.2.3
- name: grafana
- namespace: monitoring
- spec:
- type: NodePort #添加内容
- ports:
- - name: http
- port: 3000
- targetPort: http
- nodePort: 30100 #添加内容
- selector:
- app.kubernetes.io/component: grafana
- app.kubernetes.io/name: grafana
- app.kubernetes.io/part-of: kube-prometheus
修改 prometheus-service.yaml ,改为 nodepode :
vim prometheus-service.yaml
- apiVersion: v1
- kind: Service
- metadata:
- labels:
- app.kubernetes.io/component: prometheus
- app.kubernetes.io/instance: k8s
- app.kubernetes.io/name: prometheus
- app.kubernetes.io/part-of: kube-prometheus
- app.kubernetes.io/version: 2.39.1
- name: prometheus-k8s
- namespace: monitoring
- spec:
- type: NodePort #添加内容
- ports:
- - name: web
- port: 9090
- targetPort: web
- nodePort: 30200 #添加内容
- - name: reloader-web
- port: 8080
- targetPort: reloader-web
- selector:
- app.kubernetes.io/component: prometheus
- app.kubernetes.io/instance: k8s
- app.kubernetes.io/name: prometheus
- app.kubernetes.io/part-of: kube-prometheus
- sessionAffinity: ClientIP
修改 alertmanager-service.yaml ,改为 nodepode :
vim alertmanager-service.yaml
- apiVersion: v1
- kind: Service
- metadata:
- labels:
- app.kubernetes.io/component: alert-router
- app.kubernetes.io/instance: main
- app.kubernetes.io/name: alertmanager
- app.kubernetes.io/part-of: kube-prometheus
- app.kubernetes.io/version: 0.24.0
- name: alertmanager-main
- namespace: monitoring
- spec:
- type: NodePort #添加内容
- ports:
- - name: web
- port: 9093
- targetPort: web
- nodePort: 30300 #添加内容
- - name: reloader-web
- port: 8080
- targetPort: reloader-web
- selector:
- app.kubernetes.io/component: alert-router
- app.kubernetes.io/instance: main
- app.kubernetes.io/name: alertmanager
- app.kubernetes.io/part-of: kube-prometheus
- sessionAffinity: ClientIP
接着将准备好的镜像导入:
镜像自提:
链接:https://pan.baidu.com/s/1sEcpbJiO8b6g70jZhQwpSw
提取码:1111

tar -zxvf prometheus.tar.gz
可以看到这里的位置在/root下:

所以咱们把他移一下:
mv prometheus load-images.sh /root/
切换到家目录:
chmod a+x load-images.sh
运行:
./load-images.sh

将其复制到其余的两个节点上面(注意修改自己的IP):
scp -r prometheus/ load-images.sh 192.168.150.102:/root/

然后在其余两个节点上分别在家目录执行:
./load-images.sh
执行完成后回到master节点上:
cd /opt/prometheus/kube-prometheus/manifests
kubectl apply -f .

出现以上情况的话,去这个目录下的setup目录下执行一次kubectl create -f .然后再回去执行一次
kubectl create -f .