美文网首页
Kubernetes(六)

Kubernetes(六)

作者: 吃可爱长大鸭 | 来源:发表于2020-03-07 12:14 被阅读0次

    第二十一章 prometheus

    1.官网地址
    https://github.com/prometheus/prometheus
    
    2.监控k8s需要的组件
    使用metric-server收集数据给k8s集群内使用,如kubectl,hpa,scheduler等
    使用prometheus-operator部署prometheus,存储监控数据
    使用kube-state-metrics收集k8s集群内资源对象数据
    使用node_exporter收集集群中各节点的数据
    使用prometheus收集apiserver,scheduler,controller-manager,kubelet组件数据
    使用alertmanager实现监控报警
    使用grafana实现数据可视化
    
    metrics-server 主要关注的是资源度量 API 的实现,比如 CPU、文件描述符、内存、请求延时等指标。
    kube-state-metrics 主要关注的是业务相关的一些元数据,比如 Deployment、Pod、副本状态等
    
    
    3.安装部署prometheus
    ###导入镜像
    docker load < prom-prometheusv2_2_1.tar 
    
    ###创建命名空间
    kubectl create namespace prom
    
    ###创建资源
    cd prometheus
    kubectl create -f ./ 
    
    ###检查资源
    kubectl -n prom get all -o wide
    
    web浏览器查看
    http://10.0.0.11:30090/targets
    
    
    4.安装部署metrics-server
    ###导入镜像
    docker load < k8s-gcr-io-addon-resizer1_8_6.tar
    docker load < k8s-gcr-io-metrics-server-amd64v0-3-6.tar
    
    ###创建资源
    kubectl create -f ./
    
    ###检查
    kubectl top node
    kubectl top pod
    
    5.安装node-exporterv
    ###导入镜像
    docker load < prom-node-exporterv0_15_2.tar
    
    ###创建资源
    kubectl create -f ./
    
    ###查看资源
    kubectl -n prom get pod -o wide
    kubectl -n prom get svc
    
    ###浏览器查看
    http://10.0.0.12:9100/metrics
    http://10.0.0.13:9100/metrics
    
    
    5.安装kube-state-metrics
    ###导入镜像
    docker load < gcr-io-google_containers-kube-state-metrics-amd64v1-3-1.tar
    
    ###创建资源
    kubectl create -f ./
    
    ###查看
    kubectl -n prom get pod
    kubectl -n prom get svc
    curl 10.1.232.109:8080/metrics
    
    6.安装grafna和k8s-prometheus-adapter
    ###导入镜像
    docker load <  directxman12-k8s-prometheus-adapter-amd64-latest.tar 
    docker load <  k8s-gcr-io-heapster-grafana-amd64v5_0_4.tar
    
    ###修改grafana资源配置清单
      1 apiVersion: apps/v1
      2 kind: Deployment
      3 metadata:
      4   name: monitoring-grafana
      5   namespace: prom
      6 spec:
      7   selector:
      8     matchLabels:
      9       k8s-app: grafana
     10   replicas: 1
     11   template:
    
    ###创建资源
    cd k8s-prometheus-adapter
    kubectl create -f ./
    
    ###检查创建的资源
    kubectl -n prom get pod -o wide
    kubectl -n prom get svc
    
    ###浏览器查看
    http://10.0.0.11:32725
    
    
    ###导入dashboard
    https://grafana.com/grafana/dashboards/10000
    
    
    x.prometheus查询语句
    sum by (name) (rate (container_cpu_usage_seconds_total{image!=""}[1m]))
    
    container_cpu_usage_seconds_total{name =~ "^k8s_POD.*",namespace="default"}
    
    
    正则表达式:
    =~  模糊匹配
    ==   完全匹配
    !=   不匹配
    !~   不匹配正则表达式
    

    第二十二章 HPA资源自动扩容

    https://kubernetes.io/zh/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/
    
    1.生成测试镜像
    ###创建测试首页
    cat index.php 
    <?php
      $x = 0.0001;
      for ($i = 0; $i <= 1000000; $i++) {
        $x += sqrt($x);
      }
      echo "OK!";
    ?>
    
    ###创建dockerfile
    cat dockerfile 
    FROM php:5-apache
    ADD index.php /var/www/html/index.php
    RUN chmod a+rx index.php
    
    ###生成镜像
    docker build -t php:v1 .
    
    2.创建php-deployment资源
    cat >php-dp.yaml<<EOF
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        run: php-apache
      name: php-apache
      namespace: default
      replicas: 1
      selector:
        matchLabels:
          run: php-apache
      template:
        metadata:
          labels:
            run: php-apache
        spec:
          containers:
          - image: php:v1
            imagePullPolicy: IfNotPresent
            name: php-apache
            ports:
            - containerPort: 80
              protocol: TCP
            resources:
              requests:
                cpu: 200m
    EOF
    
    3.创建hpa资源
    cat >php-hpa.yaml<<EOF 
    apiVersion: autoscaling/v1
    kind: HorizontalPodAutoscaler
    metadata:
      name: php-apache
      namespace: default
    spec:
      maxReplicas: 10
      minReplicas: 1
      scaleTargetRef:
        apiVersion: apps/v1
        kind: Deployment
        name: php-apache
      targetCPUUtilizationPercentage: 50
    EOF
    
    4.查看
    kubectl get svc
    kubectl get pod
    kubectl get hpa
    
    5.压测
    while true; do wget -q -O- http://10.1.28.100; done
    
    6.观察hpa数据
    kubectl get hpa -w 
    kubectl get pod -w 
    
    7.如果觉得操作麻烦,可以使用下面的命令,效果一样
    ###创建dp
    kubectl run php-apache --image=php:v1 --requests=cpu=200m --expose --port=80
    
    ###创建hpa
    kubectl autoscale deployment php-apache --cpu-percent=50 --min=1 --max=10
    
    ###压测
    while true; do wget -q -O- http://10.1.28.100; done
    
    

    第二十三章 k8s知识梳理

    研究方向:
    1.二进制安装
    2.ansible安装:https://github.com/easzlab/kubeasz
    3.多Master节点和etcd集群高可用
    4.helm chart安装管理
    5.jenkins gitlab CI/CD
    6.prometheus报警 邮件 钉钉
    7.ELK 
    8.自建dns bind9
    9.备份恢复
    10.集群升级
    11.证书替换
    12.flannel详细工作原理
    13.k8s组件之间的通讯流程
    14.各组件默认的端口号
    15.污点和容忍度
    16.POD自动伸缩 
    17.资源限制 CPU 内存  
    
    k8s需要启动的服务:
    1.kube-apiserver
    2.kube-proxy
    3.kube-sechduler
    4.kube-controller
    5.etcd
    6.coredns
    7.flannel
    8.traefik
    9.docker
    10.kubelet
    
    k8s名词:
    系统组件:
    1.kube-apiserver
    2.kube-sechduler
    3.kube-controller
    4.etcd
    5.coredns
    6.kube-proxy
    7.flannel
    8.traefik
    9.docker
    10.kubelet
    
    POD控制器:
    1.RC
    2.RS
    3.Deployment    *****
    4.DaemonSet
    5.StatefulSets
    6.Job
    7.Cronjob
    
    存储:
    1.Volumes
      emptyDir
      nfs
      hostPath
      
    网络:
    1.Service
      POD IP 
      Clusrer IP
      Node IP 
    2.flannel
      gw
      vxlan 
    
    监控:
    prometheus+grafana
      metrics-server
      kube-state-metrics
      node_exporter
      alertmanager
      grafana
      promQL
    

    相关文章

      网友评论

          本文标题:Kubernetes(六)

          本文链接:https://www.haomeiwen.com/subject/vobqdhtx.html