• 云原生 | Kubernetes - Helm - Prometheus 实现资源限制


    目录

    负一、前言

    零、组件说明

    一、构建记录


    负一、前言

    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
    1. apiVersion: v1
    2. kind: Service
    3. metadata:
    4. labels:
    5. app.kubernetes.io/component: grafana
    6. app.kubernetes.io/name: grafana
    7. app.kubernetes.io/part-of: kube-prometheus
    8. app.kubernetes.io/version: 9.2.3
    9. name: grafana
    10. namespace: monitoring
    11. spec:
    12. type: NodePort #添加内容
    13. ports:
    14. - name: http
    15. port: 3000
    16. targetPort: http
    17. nodePort: 30100 #添加内容
    18. selector:
    19. app.kubernetes.io/component: grafana
    20. app.kubernetes.io/name: grafana
    21. app.kubernetes.io/part-of: kube-prometheus

    修改 prometheus-service.yaml ,改为 nodepode

    vim prometheus-service.yaml
    1. apiVersion: v1
    2. kind: Service
    3. metadata:
    4. labels:
    5. app.kubernetes.io/component: prometheus
    6. app.kubernetes.io/instance: k8s
    7. app.kubernetes.io/name: prometheus
    8. app.kubernetes.io/part-of: kube-prometheus
    9. app.kubernetes.io/version: 2.39.1
    10. name: prometheus-k8s
    11. namespace: monitoring
    12. spec:
    13. type: NodePort #添加内容
    14. ports:
    15. - name: web
    16. port: 9090
    17. targetPort: web
    18. nodePort: 30200 #添加内容
    19. - name: reloader-web
    20. port: 8080
    21. targetPort: reloader-web
    22. selector:
    23. app.kubernetes.io/component: prometheus
    24. app.kubernetes.io/instance: k8s
    25. app.kubernetes.io/name: prometheus
    26. app.kubernetes.io/part-of: kube-prometheus
    27. sessionAffinity: ClientIP

    修改 alertmanager-service.yaml ,改为 nodepode

    vim alertmanager-service.yaml
    1. apiVersion: v1
    2. kind: Service
    3. metadata:
    4. labels:
    5. app.kubernetes.io/component: alert-router
    6. app.kubernetes.io/instance: main
    7. app.kubernetes.io/name: alertmanager
    8. app.kubernetes.io/part-of: kube-prometheus
    9. app.kubernetes.io/version: 0.24.0
    10. name: alertmanager-main
    11. namespace: monitoring
    12. spec:
    13. type: NodePort #添加内容
    14. ports:
    15. - name: web
    16. port: 9093
    17. targetPort: web
    18. nodePort: 30300 #添加内容
    19. - name: reloader-web
    20. port: 8080
    21. targetPort: reloader-web
    22. selector:
    23. app.kubernetes.io/component: alert-router
    24. app.kubernetes.io/instance: main
    25. app.kubernetes.io/name: alertmanager
    26. app.kubernetes.io/part-of: kube-prometheus
    27. 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 .

    未完待续

  • 相关阅读:
    docker实战学习2022版本(七)之docker网络学习
    开源实时数仓 Apache Doris 毕业了,未来如何走得更远?
    Android Studio 导入工程&Gradle和JDK配置&修改工程名称&修改包名
    性能测试 —— Jmeter 常用三种定时器!
    标记试剂cas:608514-42-7Phosphine-生物素
    Java项目:SSM实现的一个在线文具学习用品购买商城网站
    【mq】从零开始实现 mq-05-实现优雅停机
    zookeeper集群环境搭建
    安卓多个listView拖动数据交换位置和拖动
    windows 下 vs code 格式化代码(clang-format)
  • 原文地址:https://blog.csdn.net/Trollz/article/details/127786089