当前位置: 首页 > news >正文

石家庄专业做网站注册电气工程师报考条件

石家庄专业做网站,注册电气工程师报考条件,专注网站建设与优化,怎么学习企业网站维护k8s集群 安装配置 Prometheusgrafana k8s环境如下#xff1a;机器规划#xff1a; node-exporter组件安装和配置安装node-exporter通过node-exporter采集数据显示192.168.40.180主机cpu的使用情况显示192.168.40.180主机负载使用情况 Prometheus server安装和配置创建sa账号grafana k8s环境如下机器规划 node-exporter组件安装和配置安装node-exporter通过node-exporter采集数据显示192.168.40.180主机cpu的使用情况显示192.168.40.180主机负载使用情况 Prometheus server安装和配置创建sa账号对sa做rbac授权创建prometheus数据存储目录安装Prometheus server服务通过deployment部署prometheus给prometheus pod创建一个servicePrometheus热加载 可视化UI界面Grafana的安装和配置安装GrafanaGrafana界面接入Prometheus数据源 配置grafana界面导入的监控模板可在如下链接搜索如果Grafana导入Prometheusz之后发现仪表盘没有数据如何排查 安装kube-state-metrics组件kube-state-metrics是什么安装kube-state-metrics组件 k8s环境如下 k8s集群 k8s的控制节点 ip192.168.40.110 主机名k8smaster1 配置4vCPU/4Gi内存 k8s的工作节点 ip192.168.40.111 主机名k8snode1 配置4vCPU/4Gi内存 k8s版本1.25 机器规划 我的实验环境使用的k8s集群是一个master节点和一个node节点 master节点的机器ip是192.168.40.110主机名是k8smaster1 node节点的机器ip是192.168.40.111主机名是k8snode1 node-exporter组件安装和配置 node-exporter介绍 node-exporter可以采集机器物理机、虚拟机、云主机等的监控指标数据能够采集到的指标包括CPU, 内存磁盘网络文件数等信息。 安装node-exporter node-exporter.tar.gz镜像压缩包上传到k8s的各个节点手动解压 链接https://pan.baidu.com/s/1EBsJPfWDO3c1qMeaESe5Ig?pwd7bbw 提取码7bbw kubectl create ns monitor-sa ctr -nk8s.io images import node-exporter.tar.gz docker load -i node-exporter.tar.gznode-export.yaml 链接https://pan.baidu.com/s/1wqaDok9afK58AGTR-QlvGg?pwdfjfr 提取码fjfr cat node-export.yamlkind: DaemonSet #可以保证k8s集群的每个节点都运行完全一样的podspec:hostPID: truehostIPC: truehostNetwork: true # hostNetwork、hostIPC、hostPID都为True时表示这个Pod里的所有容器 #会直接使用宿主机的网络直接与宿主机进行IPC进程间通信通信可以看到宿主机里正在运行的所有进程。 #加入了hostNetwork:true会直接将我们的宿主机的9100端口映射出来 #从而不需要创建service 在我们的宿主机上就会有一个9100的端口cpu: 0.15 #这个容器运行至少需要0.15核cpusecurityContext:privileged: true #开启特权模式args:- --path.procfs #配置挂载宿主机node节点的路径- /host/proc- --path.sysfs #配置挂载宿主机node节点的路径- ^/(sys|proc|dev|host|etc)($|/)#通过正则表达式忽略某些文件系统挂载点的信息收集volumeMounts:- name: devmountPath: /host/dev- name: procmountPath: /host/proc- name: sysmountPath: /host/sys- name: rootfsmountPath: /rootfs #将主机/dev、/proc、/sys这些目录挂在到容器中这是因为我们采集的很多节点数据都是通过这些文件来获取系统信息的。 通过kubectl apply更新node-exporter.yaml文件 kubectl apply -f node-export.yaml查看node-exporter是否部署成功 kubectl get pods -n monitor-sa显示如下看到pod的状态都是running说明部署成功 通过node-exporter采集数据 显示192.168.40.180主机cpu的使用情况 curl http://虚拟机ip:9100/metrics curl http://192.168.40.110:9100/metrics | grep node_cpu_seconds#HELP解释当前指标的含义上面表示在每种模式下node节点的cpu花费的时间以s为单位#TYPE说明当前指标的数据类型上面是counter类型 node_cpu_seconds_total{cpu0,modeidle} cpu0上idle进程占用CPU的总时间CPU占用时间是一个只增不减的度量指标从类型中也可以看出node_cpu的数据类型是counter计数器counter计数器只是采集递增的指标 显示192.168.40.180主机负载使用情况 curl http://192.168.40.180:9100/metrics | grep node_loadnode_load1该指标反映了当前主机在最近一分钟以内的负载情况系统的负载情况会随系统资源的使用而变化因此node_load1反映的是当前状态数据可能增加也可能减少从注释中可以看出当前指标类型为gauge标准尺寸gauge标准尺寸统计的指标可增加可减少 Prometheus server安装和配置 创建sa账号对sa做rbac授权 创建一个sa账号monitor kubectl create serviceaccount monitor -n monitor-sa 把sa账号monitor通过clusterrolebing绑定到clusterrole上 kubectl create clusterrolebinding monitor-clusterrolebinding -n monitor-sa --clusterrolecluster-admin --serviceaccountmonitor-sa:monitor注意行上面授权可能回报错那就需要下面的授权命令 kubectl create clusterrolebinding monitor-clusterrolebinding-1 -n monitor-sa --clusterrolecluster-admin --usersystem:serviceaccount:monitor:monitor-sa创建prometheus数据存储目录 在k8s集群的xianchaonode1节点上创建数据存储目录 #在节点创建 mkdir /data chmod 777 /data/安装Prometheus server服务 创建一个configmap存储卷用来存放prometheus配置信息 通过kubectl apply更新configmap prometheus-cfg.yaml文件上传到k8s控制节点k8smaster1上: 链接https://pan.baidu.com/s/1lQGQLp7ikDHSanOusSMTWQ?pwdw6w4 提取码w6w4 kubectl apply -f prometheus-cfg.yamlcat prometheus-cfg.yamlscrape_interval: 15s #采集目标主机监控据的时间间隔scrape_timeout: 10s # 数据采集超时时间默认10sevaluation_interval: 1m #触发告警检测的时间默认是1m#我们写了超过80%的告警结果收到多条告警但是真实超过80%的只有一个时间点。#这是另外一个参数影响的 evaluation_interval #这个是触发告警检测的时间默认为1m。假如我们的指标是5m被拉取一次。 #检测根据evaluation_interval 1m一次所以在值被更新前我们一直用的旧值来进行多次判断造成了1m一次同一个指标被告警了4次。#scrape_configs配置数据源称为target每个target用job_name命名。又分为静态配置和服务发现- job_name: kubernetes-nodekubernetes_sd_configs: #使用的是k8s的服务发现- role: node # 使用node角色它使用默认的kubelet提供的http端口来发现集群中每个node节点。relabel_configs: #重新标记- source_labels: [__address__] #配置的原始标签匹配地址regex: (.*):10250 #匹配带有10250端口的urlreplacement: ${1}:9100 #把匹配到的ip:10250的ip保留target_label: __address__ #新生成的url是${1}获取到的ip:9100action: replace- action: labelmap #匹配到下面正则表达式的标签会被保留,如果不做regex正则的话默认只是会显示instance标签regex: __meta_kubernetes_node_label_(.)- job_name: kubernetes-node-cadvisor # 抓取cAdvisor数据是获取kubelet上/metrics/cadvisor接口数据来获取容器的资源使用情况- action: labelmap #把匹配到的标签保留regex: __meta_kubernetes_node_label_(.) #保留匹配到的具有__meta_kubernetes_node_label的标签- target_label: __address__ #获取到的地址__address__192.168.40.110:10250replacement: kubernetes.default.svc:443 #把获取到的地址替换成新的地址kubernetes.default.svc:443- source_labels: [__meta_kubernetes_node_name] #把原始标签中__meta_kubernetes_node_name值匹配到regex: (.)target_label: __metrics_path__ #获取__metrics_path__对应的值replacement: /api/v1/nodes/${1}/proxy/metrics/cadvisor #把metrics替换成新的值api/v1/nodes/k8smaster1/proxy/metrics/cadvisor # ${1}是__meta_kubernetes_node_name获取到的值 #新的url就是https://kubernetes.default.svc:443/api/v1/nodes/k8smaster1/proxy/metrics/cadvisor- job_name: kubernetes-apiserverkubernetes_sd_configs:- role: endpoints #使用k8s中的endpoint服务发现采集apiserver 6443端口获取到的数据- source_labels: [__meta_kubernetes_namespace, __meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name] #endpoint这个对象的名称空间 ,endpoint对象的服务名,exnpoint的端口名称]action: keep #采集满足条件的实例其他实例不采集regex: default;kubernetes;https #正则匹配到的默认空间下的service名字是kubernetes协议是https的endpoint类型保留下来relabel_configs:- source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scrape]action: keepregex: true # 重新打标仅抓取到的具有 prometheus.io/scrape: true 的annotation的端点意思是说如果某个service具有prometheus.io/scrape true annotation声明则抓取annotation本身也是键值结构所以这里的源标签设置为键而regex设置值true当值匹配到regex设定的内容时则执行keep动作也就是保留其余则丢弃。- source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scheme]action: replacetarget_label: __scheme__regex: (https?) #重新设置scheme匹配源标签__meta_kubernetes_service_annotation_prometheus_io_scheme也就是prometheus.io/scheme annotation如果源标签的值匹配到regex则把值替换为__scheme__对应的值。- source_labels: [__meta_kubernetes_service_annotation_prometheus_io_path]action: replacetarget_label: __metrics_path__regex: (.) # 应用中自定义暴露的指标也许你暴露的API接口不是/metrics这个路径那么你可以在这个POD对应的service中做一个prometheus.io/path /mymetrics 声明上面的意思就是把你声明的这个路径赋值给__metrics_path__其实就是让prometheus来获取自定义应用暴露的metrices的具体路径不过这里写的要和service中做好约定如果service中这样写 prometheus.io/app-metrics-path: /metrics 那么你这里就要 __meta_kubernetes_service_annotation_prometheus_io_app_metrics_path这样写。- source_labels: [__address__, __meta_kubernetes_service_annotation_prometheus_io_port]action: replacetarget_label: __address__regex: ([^:])(?::\d)?;(\d)replacement: $1:$2 # 暴露自定义的应用的端口就是把地址和你在service中定义的 prometheus.io/port port 声明做一个拼接然后赋值给__address__这样prometheus就能获取自定义应用的端口然后通过这个端口再结合__metrics_path__来获取指标如果__metrics_path__值不是默认的/metrics那么就要使用上面的标签替换来获取真正暴露的具体路径。 scrape_configs: #scrape_configs配置数据源称为target每个target用job_name命名。又分为静态配置和服务发现- job_name: kubernetes-nodekubernetes_sd_configs: #使用的是k8s的服务发现- role: node # 使用node角色它使用默认的kubelet提供的http端口来发现集群中每个node节点。relabel_configs: #重新标记- source_labels: [__address__] #配置的原始标签匹配地址regex: (.*):10250 #匹配带有10250端口的urlreplacement: ${1}:9100 #把匹配到的ip:10250的ip保留target_label: __address__ #新生成的url是${1}获取到的ip:9100action: replace- action: labelmap #匹配到下面正则表达式的标签会被保留,如果不做regex正则的话默认只是会显示instance标签regex: __meta_kubernetes_node_label_(.)通过deployment部署prometheus 镜像prometheus-2-2-1.tar.gz上传到k8s的工作节点k8snode1上手动解压 链接https://pan.baidu.com/s/1arlhVb0q-9tWe9KHZG1Htg?pwdj6m1 提取码j6m1 ctr -nk8s.io images import prometheus-2-2-1.tar.gz #1.24前用 docker load -i prometheus-2-2-1.tar.gzprometheus-deploy.yaml 上传至k8smaster1 链接https://pan.baidu.com/s/11QOcz5udgbMpxGoYD6pP9w?pwdrkp6 提取码rkp6 kubectl apply -f prometheus-deploy.yamlcat prometheus-deploy.yaml- --storage.tsdb.path/prometheus #旧数据存储目录- --storage.tsdb.retention720h #何时删除旧数据默认为15天。- --web.enable-lifecycle #开启热加载 注意在上面的prometheus-deploy.yaml文件有个nodeName字段这个就是用来指定创建的这个prometheus的pod调度到哪个节点上我们这里让nodeNamek8snode1也即是让pod调度到k8snode1节点上因为k8snode1节点我们创建了数据目录/data所以大家记住你在k8s集群的哪个节点创建/data就让pod调度到哪个节点nodeName根据你们自己环境主机去修改即可。 查看prometheus是否部署成功 kubectl get pods -n monitor-sa给prometheus pod创建一个service prometheus-svc.yaml文件上传到k8s的控制节点k8smaster1上 链接https://pan.baidu.com/s/1j9Nz7trUT6rgZ9kS-ANb7Q?pwdhgql 提取码hgql kubectl apply -f prometheus-svc.yaml查看service在物理机映射的端口 kubectl get svc -n monitor-sa通过上面可以看到service在宿主机上映射的端口是31090这样我们访问k8s集群的master1节点的ip:31090就可以访问到prometheus的web ui界面了 #访问prometheus web ui界面 火狐浏览器输入如下地址 http://192.168.40.110:31090/graph可看到如下页面 点击页面的Status-Targets可看到如下,说明我们配置的服务发现可以正常采集数据 Prometheus热加载 为了每次修改配置文件可以热加载prometheus也就是不停止prometheus就可以使配置生效想要使配置生效可用如下热加载命令 kubectl get pods -n monitor-sa -o wide -l appprometheus10.244.249.2是prometheus的pod的ip地址如何查看prometheus的pod ip 想要使配置生效可用如下命令热加载 curl -X POST http://10.244.249.2:9090/-/reload热加载速度比较慢可以暴力重启prometheus如修改上面的prometheus-cfg.yaml文件之后可执行如下强制删除 kubectl delete -f prometheus-cfg.yaml kubectl delete -f prometheus-deploy.yaml然后再通过apply更新 kubectl apply -f prometheus-cfg.yaml kubectl apply -f prometheus-deploy.yaml注意线上最好热加载暴力删除可能造成监控数据的丢失 可视化UI界面Grafana的安装和配置 安装Grafana 镜像heapster-grafana-amd64_v5_0_4.tar.gz上传到k8s的工作节点k8snode1上手动解压: 链接https://pan.baidu.com/s/1CMP6Ju-Zi-4dmJy2eSVtew?pwdfkls 提取码fkls ctr -nk8s.io images import heapster-grafana-amd64_v5_0_4.tar.gzgrafana.yaml文件上传到k8s的控制节点 kubectl apply -f grafana.yaml查看grafana是否创建成功 kubectl get pods -n kube-system -l taskmonitoringGrafana界面接入Prometheus数据源 查看grafana前端的service kubectl get svc -n kube-system | grep grafana 登陆grafana在浏览器访问 192.168.40.110:30551 配置grafana界面 选择Create your first data source Name: Prometheus Type: Prometheus HTTP 处的URL写 如下 http://prometheus.monitor-sa.svc:9090配置好的整体页面如下 点击左下角Save Test出现如下Data source is working说明prometheus数据源成功的被grafana接入了 导入的监控模板可在如下链接搜索 https://grafana.com/dashboards?dataSourceprometheussearchkubernetes上面Save Test测试没问题之后就可以返回Grafana主页面 点击左侧号下面的Import出现如下界面 可直接导入node_exporter.json监控模板这个可以把node节点指标显示出来 node_exporter.json 链接https://pan.baidu.com/s/1lK43XIWKuMYiQoWBAtJJ-Q?pwdj01k 提取码j01k docker_rev1.json显示容器资源指标的 链接https://pan.baidu.com/s/1F_9ApBvKCV3lkHvxPLP-OQ?pwdwkph 提取码wkph 导入docker_rev1.json监控模板步骤和上面导入node_exporter.json步骤一样导入之后显示如下 如果Grafana导入Prometheusz之后发现仪表盘没有数据如何排查 打开grafana界面找到仪表盘对应无数据的图标 Edit之后出现如下 node_cpu_seconds_total 就是grafana上采集的cpu的时间需要到prometheus ui界面看看采集的指标是否是node_cpu_seconds_total 如果在prometheus ui界面输入node_cpu_seconds_total没有数据那就看看是不是prometheus采集的数据是node_cpu_seconds_totals怎么看呢 安装kube-state-metrics组件 kube-state-metrics是什么 kube-state-metrics通过监听API Server生成有关资源对象的状态指标比如Node、Pod需要注意的是kube-state-metrics只是简单的提供一个metrics数据并不会存储这些指标数据所以我们可以使用Prometheus来抓取这些数据然后存储主要关注的是业务相关的一些元数据比如Pod副本状态等调度了多少个replicas现在可用的有几个多少个Pod是running/stopped/terminated状态Pod重启了多少次我有多少job在运行中。 安装kube-state-metrics组件 创建sa并对sa授权 kube-state-metrics-rbac.yaml文件上传到k8s的控制节点 链接https://pan.baidu.com/s/1fNAovsSfabcQMTpX4AknnQ?pwdm6r0 提取码m6r0 kubectl apply -f kube-state-metrics-rbac.yaml安装kube-state-metrics组件 kube-state-metrics_1_9_0.tar.gz组件上传到k8s各个工作节点手动解压 链接https://pan.baidu.com/s/1UufIAWnnQgP1vYSTvushSw?pwduunh 提取码uunh ctr -nk8s.io images import kube-state-metrics_1_9_0.tar.gzkube-state-metrics-deploy.yaml上传到k8smaster1节点 链接https://pan.baidu.com/s/1GnMeja2VQUwHXj9MPsCHqQ?pwdn0o9 提取码n0o9 kubectl apply -f kube-state-metrics-deploy.yaml查看kube-state-metrics是否部署成功 kubectl get pods -n kube-system -l appkube-state-metrics创建service kube-state-metrics-svc.yaml文件上传到k8s的k8smaster1节点 链接https://pan.baidu.com/s/1DjZuLFDcH9mjRXY6CHJNfw?pwduo52 提取码uo52 kubectl apply -f kube-state-metrics-svc.yaml查看service是否创建成功 kubectl get svc -n kube-system | grep kube-state-metrics在grafana web界面导入Kubernetes Cluster (Prometheus)-1577674936972.json和Kubernetes cluster monitoring (via Prometheus) (k8s 1.16)-1577691996738.json 导入Kubernetes Cluster (Prometheus)-1577674936972.json文件 链接https://pan.baidu.com/s/1SpGM2hb0uuEsyJaYnhE_Rw?pwdu1dz 提取码u1dz 在grafana web界面导入Kubernetes cluster monitoring (via Prometheus) (k8s 1.16)-1577691996738.json 链接https://pan.baidu.com/s/1v-zwCmwqC3iRix1M5s_GnA?pwd2jhl 提取码2jhl
http://www.dnsts.com.cn/news/104538.html

相关文章:

  • 深圳网站建设合同范本买奢侈品代工厂做的产品的网站
  • 织梦网站上传保存文档a wordpress
  • 做网站保存什么格式最好网站缓存优化怎么做
  • 手机网站外链公司网站开发费用济南兴田德润评价
  • 商丘做网站sqlongliqi医疗器械做网站到哪里先备案
  • 做企业网站织梦和wordpress哪个好常州中小企业网站制作
  • 个人网站能不能做论坛房子做水电的时候是不是要先埋网站
  • 张家口建设网站网站建设 有哪些费用
  • wordpress 4.9 站群网站开发进度把握
  • 福建城市建设厅网站哪里可以免费设计装修效果图
  • 瑞昌市建设局网站企业做网站和宣传册的作用
  • 常州网站建设选思创做服装最好的网站有哪些
  • 贵溪市城乡建设局网站wordpress 文件服务
  • 月子中心网站设计哈尔滨网站建设公司有哪些
  • 永久免费网站服务器想开个网站怎样开公司
  • wordpress中英文站点wordpress用ssd服务器的优势
  • 沈阳门户网站建设苏州 网站设计
  • 公司网站推广怎么做万网发布网站
  • 营销型网站建设品牌交互设计英文
  • 惠州专业做网站公司网页升级紧急通知怎么设置
  • 海南省建设集团有限公司网站网站建设和网络营销
  • 住房和城乡建设部网站造价师wordpress 图片木马
  • 深圳龙岗高端网站建设intitle:郑州网站建设
  • 南昌媒体网站建设口碑推荐wordpress模块插件
  • c 网站建设综合报告网页加速器安卓
  • 一个空间可以做几个网站wordpress上传文件插件
  • 云vps怎么搭建网站wordpress博客论坛插件
  • 为什么建设网银网站打不开wordpress花园破解小彬子
  • 企业网站建设 百度文库东营建设信息网官网网址
  • 做网站设计用什么软件怎么用视频做网站背景