包含标签 kubernetes 的文章

Prometheus监控k8s(三)——业务指标采集

背景 由于容器化和微服务的大力发展,Kubernetes基本已经统一了容器管理方案,当我们使用Kubernetes来进行容器化管理的时候,全面监控Kubernetes也就成了我们第一个需要探索的问题。我们需要监控kubernetes的ingress、service、deployment、pod……等等服务,以达到随时掌握Kubernetes集群的内部状况。 此文章也是Prometheus监控系列的第三篇,具体描述了在Kubernetes中使用Prometheus来采集业务指标。多数为思想指导,会列出两个例子。第一个例子是针对部署在Kubernetes中的服务,另外一个例子是非Kubernetes部署的服务。前者为使用“动态采集”,后者使用“静态采集”。 概念 要使用Prometheus实现自动采集业务指标数据真的非常简单,只需要2步 1、业务侧实现一个接口,返回Prometheus规范化数据,如下: traefik_entrypoint_requests_total{code="302",entrypoint="https",method="HEAD",protocol="http"} 1 traefik_entrypoint_requests_total{code="302",entrypoint="https",method="POST",protocol="http"} 1 traefik_entrypoint_requests_total{code="304",entrypoint="http",method="GET",protocol="http"} 15 traefik_entrypoint_requests_total{code="304",entrypoint="https",method="GET",protocol="http"} 5951 traefik_entrypoint_requests_total{code="400",entrypoint="https",method="GET",protocol="http"} 149 traefik_entrypoint_requests_total{code="403",entrypoint="http",method="GET",protocol="http"} 2 traefik_entrypoint_requests_total{code="403",entrypoint="https",method="HEAD",protocol="http"} 2 traefik_entrypoint_requests_total{code="404",entrypoint="http",method="GET",protocol="http"} 680 traefik_entrypoint_requests_total{code="404",entrypoint="http",method="HEAD",protocol="http"} 15 traefik_entrypoint_requests_total{code="404",entrypoint="http",method="POST",protocol="http"} 674 每行代表一个监控项,以KEY VALUE形式返回,KEY可以带上0个或多个属性,多个属性以 “,”分隔。在Prometheus中查询数据的时候,可以用这些属性作为筛选条件。 Key中不能包含 “-” 等特殊字符,最好使用 “_” 。 2、运维侧部署的时候,在svc上带上3个标签……

阅读全文

Prometheus监控k8s(二)——监控部署

背景 由于容器化和微服务的大力发展,Kubernetes基本已经统一了容器管理方案,当我们使用Kubernetes来进行容器化管理的时候,全面监控Kubernetes也就成了我们第一个需要探索的问题。我们需要监控kubernetes的ingress、service、deployment、pod……等等服务,已达到随时掌握Kubernetes集群的内部状况。 此文章是Prometheus监控系列的第二篇,基于上一篇讲解了怎么对Kubernetes集群实施Prometheus监控。 Prometheus部署 在k8s上部署Prometheus十分简单,下面给的例子中将Prometheus部署到prometheus命名空间。 部署——监控数据采集 Prometheus 将kube-state-metrics和prometheus分开部署,先部署prometheus。 prometheus-rbac.yaml apiVersion: rbac.authorization.k8s.io/v1beta1 kind: ClusterRole metadata: name: prometheus rules: - apiGroups: [""] resources: - nodes - nodes/proxy - services - endpoints - pods verbs: ["get", "list", "watch"] - apiGroups: - extensions resources: - ingresses verbs: ["get", "list", "watch"] - nonResourceURLs: ["/metrics"] verbs: ["get"] --- apiVersion: v1 kind: ServiceAccount metadata: name: prometheus namespace: prometheus --- apiVersion: rbac.……

阅读全文

Prometheus监控k8s(一)——监控框架调研

背景 由于容器化和微服务的大力发展,Kubernetes基本已经统一了容器管理方案,当我们使用Kubernetes来进行容器化管理的时候,全面监控Kubernetes也就成了我们第一个需要探索的问题。我们需要监控kubernetes的ingress、service、deployment、pod……等等服务,已达到随时掌握Kubernetes集群的内部状况。 此文章是Prometheus监控系列的第一篇,目的也很明确,旨在于寻找一套能够胜任kubernetes集群监控的架构。 k8s监控方案调研 1、cAdvisor + InfluxDB + Grafana 2、Heapster + InfluxDB + Grafana [x] 3、Promethus + kube-state-metrics + Grafana……

阅读全文

Ingress介绍

概念

Ingress是kubernetes1.1之后官方提出的一个标准,按照这套标准它有多种实现,比如 nginx-ingress-controller、traefik-ingress-controller、kong-ingress-controller,这3中都是官方推荐的。Ingress的出现解决了Service的短板:只能在tcp层面做负载均衡。而ingress可以方便的做http/https层面的负载均衡。一个是在4层,一个在7层。ingress就是控制客户端从入口连接到k8s集群服务的规则的集合!

ingress出现之前,服务暴露是这样的:

image

ingress出现之后,服务暴露是这样的:

……

阅读全文

traefik在kubernetes中的应用

目的: 通过本篇文章,能够简单了解和掌握Traefik在Kubernetes中的应用 如果不了解ingress和ingress-controller概念,请先看前一篇文章。http://km.oa.dragonest.com/x/RoFf traefik介绍: 开源的微服务网关服务,支持Mesos、Docker、Rancher、Kubernetes等等,也支持直接部署在物理服务器。能够实现负载均衡、HTTPS、自动更新Ingerss配置等等 traefik部署: traefik-deployment部署 apiVersion: extensions/v1beta1 kind: Deployment metadata: name: traefik-ingress-controller namespace: traefik labels: k8s-app: traefik-ingress-lb spec: replicas: 1 selector: matchLabels: k8s-app: traefik-ingress-lb template: metadata: labels: k8s-app: traefik-ingress-lb name: traefik-ingress-lb spec: nodeSelector: traefik-controller-qa: "yes" serviceAccountName: traefik-ingress-controller terminationGracePeriodSeconds: 60 volumes: - name: ssl secret: secretName: traefik-cert - name: config configMap: name: traefik-conf containers: - image: traefik name: traefik-ingress-lb volumeMounts: - mountPath: "/ssl" name: "ssl" - mountPath: "/config" name: "config" ports: - name: http containerPort: 80 - name: admin containerPort: 8080 - name: https containerPort: 443 args: - --configFile=/config/traefik.……

阅读全文