kubernetes怎么装监控

kubernetes怎么装监控

要在 Kubernetes 中安装监控,可以通过多种方式实现,Prometheus、Grafana、Heapster 是最常见的工具。这里我们重点介绍 PrometheusGrafana 的安装和配置。Prometheus 是一个开源的系统监控和报警工具,Grafana 是一个开源的分析和监控平台。 安装和配置这两个工具可以帮助你轻松实现对 Kubernetes 集群的监控。先安装 Prometheus,然后再安装 Grafana,最后将 Grafana 配置为使用 Prometheus 作为数据源,并创建仪表盘来显示监控数据。

一、安装 PROMETHEUS

首先需要创建一个命名空间来安装 Prometheus。可以使用以下命令来创建命名空间:

kubectl create namespace monitoring

接下来,创建一个 Prometheus 配置文件 prometheus-config.yaml,内容如下:

apiVersion: v1

kind: ConfigMap

metadata:

name: prometheus-server-conf

namespace: monitoring

data:

prometheus.yml: |-

global:

scrape_interval: 15s

scrape_configs:

- job_name: 'kubernetes-apiservers'

kubernetes_sd_configs:

- role: endpoints

scheme: https

tls_config:

ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt

bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token

relabel_configs:

- source_labels: [__meta_kubernetes_namespace, __meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name]

action: keep

regex: default;kubernetes;https

- job_name: 'kubernetes-nodes'

kubernetes_sd_configs:

- role: node

relabel_configs:

- source_labels: [__address__]

regex: '(.*):10250'

replacement: '${1}:10255'

target_label: __address__

- job_name: 'kubernetes-cadvisor'

kubernetes_sd_configs:

- role: node

relabel_configs:

- source_labels: [__address__]

regex: '(.*):10250'

replacement: '${1}:4194'

target_label: __address__

- job_name: 'kubernetes-service-endpoints'

kubernetes_sd_configs:

- role: endpoints

- job_name: 'kubernetes-pods'

kubernetes_sd_configs:

- role: pod

应用配置文件:

kubectl apply -f prometheus-config.yaml

创建 Prometheus 部署和服务文件 prometheus-deployment.yaml

apiVersion: apps/v1

kind: Deployment

metadata:

name: prometheus-server

namespace: monitoring

spec:

replicas: 1

selector:

matchLabels:

app: prometheus

component: server

template:

metadata:

labels:

app: prometheus

component: server

spec:

containers:

- name: prometheus

image: prom/prometheus

args:

- "--config.file=/etc/config/prometheus.yml"

- "--storage.tsdb.path=/prometheus/"

- "--web.console.libraries=/usr/share/prometheus/console_libraries"

- "--web.console.templates=/usr/share/prometheus/consoles"

ports:

- containerPort: 9090

volumeMounts:

- name: config-volume

mountPath: /etc/config

- name: storage-volume

mountPath: /prometheus

volumes:

- name: config-volume

configMap:

name: prometheus-server-conf

- name: storage-volume

emptyDir: {}

---

apiVersion: v1

kind: Service

metadata:

name: prometheus-server

namespace: monitoring

labels:

app: prometheus

component: server

spec:

type: NodePort

ports:

- port: 9090

targetPort: 9090

nodePort: 30090

selector:

app: prometheus

component: server

应用部署文件:

kubectl apply -f prometheus-deployment.yaml

二、安装 GRAFANA

在 Kubernetes 中安装 Grafana 同样需要创建一个命名空间以及配置和部署文件。

首先,创建 Grafana 配置文件 grafana-datasource-config.yaml

apiVersion: v1

kind: ConfigMap

metadata:

name: grafana-datasources

namespace: monitoring

data:

datasource.yaml: |-

apiVersion: 1

datasources:

- name: Prometheus

type: prometheus

access: proxy

url: http://prometheus-server.monitoring.svc.cluster.local:9090

应用配置文件:

kubectl apply -f grafana-datasource-config.yaml

创建 Grafana 部署和服务文件 grafana-deployment.yaml

apiVersion: apps/v1

kind: Deployment

metadata:

name: grafana

namespace: monitoring

spec:

replicas: 1

selector:

matchLabels:

app: grafana

template:

metadata:

labels:

app: grafana

spec:

containers:

- name: grafana

image: grafana/grafana

ports:

- containerPort: 3000

volumeMounts:

- name: grafana-storage

mountPath: /var/lib/grafana

volumes:

- name: grafana-storage

emptyDir: {}

---

apiVersion: v1

kind: Service

metadata:

name: grafana

namespace: monitoring

labels:

app: grafana

spec:

type: NodePort

ports:

- port: 3000

targetPort: 3000

nodePort: 30030

selector:

app: grafana

应用部署文件:

kubectl apply -f grafana-deployment.yaml

三、配置 GRAFANA 仪表盘

Grafana 部署完成后,可以通过浏览器访问 Grafana 界面。默认用户名和密码都是 admin,登录后需要进行以下配置:

  1. 添加数据源:

    • 打开 Grafana 界面,点击左侧的齿轮图标,选择 “Data Sources”。
    • 点击 “Add data source”,选择 “Prometheus”。
    • 在 URL 栏输入 http://prometheus-server.monitoring.svc.cluster.local:9090
    • 点击 “Save & Test” 来测试数据源是否配置成功。
  2. 导入仪表盘:

    • 点击左侧的加号图标,选择 “Import”。
    • 在 “Import via grafana.com” 栏输入 6417,这是一个 Kubernetes 监控的预定义仪表盘。
    • 点击 “Load”,选择刚刚添加的 Prometheus 数据源,点击 “Import”。

四、监控 METRICS 和 ALERTING

Prometheus 和 Grafana 配置完成后,可以监控 Kubernetes 集群的各种性能指标,包括节点、Pod、服务和容器的 CPU、内存、网络和磁盘使用情况。为了更好地监控和报警,可以配置 Prometheus 的 Alertmanager。

  1. 创建 Alertmanager 配置文件 alertmanager-config.yaml

apiVersion: v1

kind: ConfigMap

metadata:

name: alertmanager-config

namespace: monitoring

data:

alertmanager.yml: |-

global:

resolve_timeout: 5m

route:

group_by: ['job']

group_wait: 30s

group_interval: 5m

repeat_interval: 12h

receiver: 'default-receiver'

receivers:

- name: 'default-receiver'

email_configs:

- to: 'youremail@example.com'

from: 'alertmanager@example.com'

smarthost: 'smtp.example.com:587'

auth_username: 'alertmanager'

auth_password: 'password'

应用配置文件:

kubectl apply -f alertmanager-config.yaml

  1. 创建 Alertmanager 部署和服务文件 alertmanager-deployment.yaml

apiVersion: apps/v1

kind: Deployment

metadata:

name: alertmanager

namespace: monitoring

spec:

replicas: 1

selector:

matchLabels:

app: alertmanager

template:

metadata:

labels:

app: alertmanager

spec:

containers:

- name: alertmanager

image: prom/alertmanager

args:

- "--config.file=/etc/alertmanager/alertmanager.yml"

ports:

- containerPort: 9093

volumeMounts:

- name: config-volume

mountPath: /etc/alertmanager

volumes:

- name: config-volume

configMap:

name: alertmanager-config

---

apiVersion: v1

kind: Service

metadata:

name: alertmanager

namespace: monitoring

labels:

app: alertmanager

spec:

type: NodePort

ports:

- port: 9093

targetPort: 9093

nodePort: 30093

selector:

app: alertmanager

应用部署文件:

kubectl apply -f alertmanager-deployment.yaml

  1. 更新 Prometheus 配置文件 prometheus-config.yaml,添加 Alertmanager 配置:

apiVersion: v1

kind: ConfigMap

metadata:

name: prometheus-server-conf

namespace: monitoring

data:

prometheus.yml: |-

global:

scrape_interval: 15s

alerting:

alertmanagers:

- static_configs:

- targets:

- alertmanager.monitoring.svc.cluster.local:9093

scrape_configs:

- job_name: 'kubernetes-apiservers'

kubernetes_sd_configs:

- role: endpoints

scheme: https

tls_config:

ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt

bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token

relabel_configs:

- source_labels: [__meta_kubernetes_namespace, __meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name]

action: keep

regex: default;kubernetes;https

- job_name: 'kubernetes-nodes'

kubernetes_sd_configs:

- role: node

relabel_configs:

- source_labels: [__address__]

regex: '(.*):10250'

replacement: '${1}:10255'

target_label: __address__

- job_name: 'kubernetes-cadvisor'

kubernetes_sd_configs:

- role: node

relabel_configs:

- source_labels: [__address__]

regex: '(.*):10250'

replacement: '${1}:4194'

target_label: __address__

- job_name: 'kubernetes-service-endpoints'

kubernetes_sd_configs:

- role: endpoints

- job_name: 'kubernetes-pods'

kubernetes_sd_configs:

- role: pod

应用更新后的配置文件:

kubectl apply -f prometheus-config.yaml

五、扩展监控和自定义告警规则

为了更好地满足具体需求,可以根据业务需求扩展监控范围和自定义告警规则。可以通过修改 Prometheus 和 Alertmanager 的配置文件来实现。

  1. 创建自定义告警规则文件 prometheus-alert-rules.yaml

apiVersion: v1

kind: ConfigMap

metadata:

name: prometheus-alert-rules

namespace: monitoring

data:

alert.rules: |-

groups:

- name: example

rules:

- alert: HighCPUUsage

expr: sum(rate(container_cpu_usage_seconds_total[1m])) by (pod) > 0.5

for: 2m

labels:

severity: warning

annotations:

summary: "High CPU usage detected"

description: "Pod {{ $labels.pod }} is using high CPU for more than 2 minutes."

应用自定义告警规则:

kubectl apply -f prometheus-alert-rules.yaml

  1. 更新 Prometheus 配置文件 prometheus-config.yaml,添加告警规则:

apiVersion: v1

kind: ConfigMap

metadata:

name: prometheus-server-conf

namespace: monitoring

data:

prometheus.yml: |-

global:

scrape_interval: 15s

rule_files:

- /etc/prometheus/alert.rules

alerting:

alertmanagers:

- static_configs:

- targets:

- alertmanager.monitoring.svc.cluster.local:9093

scrape_configs:

- job_name: 'kubernetes-apiservers'

kubernetes_sd_configs:

- role: endpoints

scheme: https

tls_config:

ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt

bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token

relabel_configs:

- source_labels: [__meta_kubernetes_namespace, __meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name]

action: keep

regex: default;kubernetes;https

- job_name: 'kubernetes-nodes'

kubernetes_sd_configs:

- role: node

relabel_configs:

- source_labels: [__address__]

regex: '(.*):10250'

replacement: '${1}:10255'

target_label: __address__

- job_name: 'kubernetes-cadvisor'

kubernetes_sd_configs:

- role: node

relabel_configs:

- source_labels: [__address__]

regex: '(.*):10250'

replacement: '${1}:4194'

target_label: __address__

- job_name: 'kubernetes-service-endpoints'

kubernetes_sd_configs:

- role: endpoints

- job_name: 'kubernetes-pods'

kubernetes_sd_configs:

- role: pod

应用更新后的配置文件:

kubectl apply -f prometheus-config.yaml

通过上述步骤,你可以在 Kubernetes 集群中安装和配置 Prometheus 和 Grafana 来实现监控。通过配置告警规则和 Alertmanager,可以在出现问题时及时得到通知。

相关问答FAQs:

1. Kubernetes中为什么需要安装监控系统?

Kubernetes作为一个集群管理平台,部署和运行的应用实例可能会非常庞大和复杂。因此,为了及时发现和解决潜在的问题,监控系统在Kubernetes集群中就显得尤为重要。监控系统可以帮助管理员实时监测集群的运行状态、资源利用情况、应用程序性能等,提高集群的稳定性和可靠性。

2. Kubernetes中常用的监控系统有哪些?

在Kubernetes集群中,常用的监控系统包括Prometheus、Grafana、Elasticsearch等。其中,Prometheus是一种开源的监控和报警工具,具有灵活的数据模型和强大的查询语言;Grafana则是一个流行的可视化工具,可以将Prometheus采集的监控数据进行图形化展示;Elasticsearch则适用于日志的收集和分析,可以帮助管理员更好地了解集群中的各种日志信息。

3. 如何在Kubernetes中安装监控系统?

要在Kubernetes集群中安装监控系统,通常可以通过Helm包管理工具来简化部署流程。首先,需要在Kubernetes集群中安装Helm客户端,并配置好Tiller服务端。然后,可以通过Helm Charts来安装Prometheus Operator、Grafana、Elasticsearch等监控组件。在安装完成后,可以根据需要配置监控规则、仪表盘、报警规则等,以实现对集群的全面监控和管理。

关于 GitLab 的更多内容,可以查看官网文档:
官网地址:

 https://gitlab.cn 

文档地址:

 https://docs.gitlab.cn 

论坛地址:

 https://forum.gitlab.cn 

原创文章,作者:DevSecOps,如若转载,请注明出处:https://devops.gitlab.cn/archives/27902

(0)
DevSecOpsDevSecOps
上一篇 2024 年 7 月 15 日
下一篇 2024 年 7 月 15 日

相关推荐

  • kubernetes的组件有哪些

    Kubernetes的组件包括:API服务器、etcd、控制器管理器、调度器、kubelet、kube-proxy等。API服务器是Kubernetes的核心组件之一,负责处理所有…

    2024 年 7 月 15 日
    0
  • kubernetes为什么叫k8s

    Kubernetes之所以被称为K8s,是因为"Kubernetes"这个单词较长且拼写复杂,为了简化称呼,人们采用了首字母“K”和末字母“s”之间的8个字符“…

    2024 年 7 月 15 日
    0
  • kubernetes怎么搭建集群

    Kubernetes搭建集群可以通过以下几步完成:选择合适的基础设施、安装必要的工具和依赖、配置主节点和工作节点、初始化集群、配置网络和存储。这些步骤中,选择合适的基础设施是最为关…

    2024 年 7 月 15 日
    0
  • kubernetes英语怎么读

    Kubernetes的英语读音为“koo-ber-net-eez”,正确发音时需要注意以下几点:首字母K发音类似于中文的“库”,中间的“ber”发音类似于“伯”,最后的“net-e…

    2024 年 7 月 15 日
    0
  • kubernetes 怎么用

    Kubernetes 是一种开源的容器编排工具,主要用于自动化部署、扩展和管理容器化应用。使用 Kubernetes 的关键步骤包括:安装 Kubernetes 集群、配置节点、创…

    2024 年 7 月 15 日
    0
  • kubernetes的网络插件有哪些

    Kubernetes的网络插件有很多种,包括Flannel、Calico、Weave Net、Cilium、Kube-router等。这些插件各有特点和适用场景,例如Flannel…

    2024 年 7 月 15 日
    0
  • kubernetes怎么保存

    Kubernetes保存数据的方式主要有三种:ConfigMap、Secret、Persistent Volume (PV)。ConfigMap用于保存不敏感的配置信息,例如应用的…

    2024 年 7 月 15 日
    0
  • kubernetes怎么连接网络

    Kubernetes连接网络的方式主要包括:使用CNI插件、使用Service和Ingress、配置Network Policy。其中,使用CNI插件是实现Kubernetes网络…

    2024 年 7 月 15 日
    0
  • kubernetes怎么限制内存

    在 Kubernetes 中限制内存的方法包括设置请求和限制、使用 LimitRange 资源、配置 QoS 类别。 其中,设置请求和限制是最常用的方法,可以通过在 Pod 或容器…

    2024 年 7 月 15 日
    0
  • kubernetes怎么读谐音

    Kubernetes的谐音读作“酷-伯-奈-特-斯”。Kubernetes这个单词来源于希腊语“κυβερνήτης”,意思是“舵手”或“飞行员”。在英文中,Kubernetes的…

    2024 年 7 月 15 日
    0

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

GitLab下载安装
联系站长
联系站长
分享本页
返回顶部