包含标签 kubernetes 的文章

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

背景 由于容器化和微服务的大力发展,Kubernetes基本已经统一了容器管理方案,当我们使用Kubernetes来进行容器化管理的时候,全面监控Kubbernetes也就成了我们第一个需要探索的问题。我们需要监控kubernetes的ingress、service、deployment、pod……等等服务,已达到随时掌握Kubernetes集群的内部状况。 此文章是Prometheus监控系列的第一篇,目的也很明确,指在于寻找一套能够胜任kubernetes集群监控的架构。 k8s监控方案调研 1、cAdvisor + InfluxDB + Grafana 2、Heapster + InfluxDB + Grafana [x] 3、Promethus + kube-state-metrics + Grafana Grafana: 开源DashBoard,后端支持多种数据库,如:Influxdb、Prometheus…,插件也比较多,功能强大。非常适合用于做展示。 InfluxDB: 开源时间序列数据库,性能高效 cAdvisor: 来自 Google 的容器监控工具,也是 Kubelet 内置的容器资源收集工具。它会自动收集本机容器 CPU、内存、网络和文件系统的资源占用情况,并对外提供 cAdvisor 原生的 API。随 kubelet 启动 –cadvisor-port = 1 Heapster: 由于 cAdvisor 只提供了单机的容器资源占用情况,而 Heapster 则提供了整个集群的资源监控(kubernetes 1.11 之前,hpa都是从heapster获取数据),并支持持久化数据存储到 InfluxDB Promethues: 提供强大的数据采集、数据存储、数据展示、告警等,天生完美支持kubernetes,CNCF基金会的第二个成员,第一个是Kubernetes。而且Prometheus里面很多思想都来源于Google内部的监控系统Borgmon,可以说是Google的干儿子。 kube-state-metrics在这里作为prometheus的一个exporter来使用,提供deployment、daemonset、cronjob等服务的监控数据,由kubernestes官方提供,与prometheus紧密结合。 更多关于kube-state-metrics的信息:https://github.com/kubernetes/kube-state-metrics Prometheus优势 Prometheus和kubernetes相亲相爱 Google干儿子,大厂维护,而且最重要的一点是完美支持Kubernetes 规范定义 Prometheus对于应用层的监控,定义了一个良好的规范,只需要应用提供接口获取日志就可以了 Prometheus可以在各个层面实现监控,如下 基础设施层:监控各个主机服务器资源(包括Kubernetes的Node和非Kubernetes的Node),如CPU,内存,网络吞吐和带宽占用,磁盘I/O和磁盘使用等指标。 中间件层:监控独立部署于Kubernetes集群之外的中间件,例如:MySQL、Redis、RabbitMQ、ElasticSearch、Nginx等。 Kubernetes集群:监控Kubernetes集群本身的关键指标 Kubernetes集群上部署的应用:监控部署在Kubernetes集群上的应用 基于以上三点,所以最终选择使用Prometheus来监控Kubernetes集群。……

阅读全文

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.……

阅读全文