k8s的监控

本文涉及的产品
可观测可视化 Grafana 版,10个用户账号 1个月
可观测监控 Prometheus 版,每月50GB免费额度
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: k8s的监控

屏幕截图 2023-08-28 163846.png

一、 k8s的UI访问界面-dashboard

在dashboard中,虽然可以做到创建、删除、修改资源等操作,但通常情况下,我们会把它当做监控k8s集群的软件。

1、到GitHub主页上搜索"dashboard"即可。

//可以直接远程运行对应的yaml文件,不过,我们要看一看这个yaml文件内都有些什么内容,然后还需要将svc资源类型更改为NodePort的方式,所以这里我们可以先将这个yam文件下载到本地。

wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml

注:如果网站访问被拒绝,修改dns为114.114.114.114 (vim /etc/resolv.conf);

   或修改/etc/hosts添加域名解析条目,ip地址使用site.ip138.com解析得出。

//更改其SVC资源的类型。
...
spec:    #39行
  type: NodePort
  ports:
    - port: 443
      targetPort: 8443
  selector:
    k8s-app: kubernetes-dashboard
...
kubectl apply -f recommended.yaml
//通常,涉及到k8s的镜像,国内下载往往很慢,不过这个还好。运行过后,查看对应的SVC暴露端口,注意,这个是基于https的访问。
[root@master dashboard]# kubectl get svc -n kubernetes-dashboard 
NAME                        TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)         AGE
dashboard-metrics-scraper   ClusterIP   10.107.195.150           8000/TCP        54s
kubernetes-dashboard        NodePort    10.109.65.106            443:30990/TCP   55s
//此时可以看到,登录dashboard有两种方式,哪一种都可以。

基于token的方法登录dashboard

1、创建一个dashboard的管理用户。

kubectl create serviceaccount dashboard-admin -n kube-system

2、绑定用户为集群管理用户。

kubectl create clusterrolebinding dashboard-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin

3、获取token.

//得到token的名称
kubectl get secrets -n kube-system | grep dashboard-admin  
dashboard-admin-token-jv77h   #自己写自己的
//查看上述得到的secret资源的详细信息,会得到token.
kubectl describe secrets -n kube-system dashboard-admin-token-jv77h

4、在浏览器上使用token登录。

PS: 如果是使用的旧版本的dashboard,使用谷歌浏览器登录,可能是不成功的,需要换成其他的浏览器,比如:火狐。

基于kubeconfig配置文件的方法登录dashboard

1、获取token.

//得到token的名称
kubectl get secrets -n kube-system | grep dashboard-admin  
dashboard-admin-token-jv77h  
//查看上述得到的secret资源的详细信息,会得到token.
kubectl describe secrets -n kube-system dashboard-admin-token-jv77h

2、生成kubeconfig配置文件。

//设置一个环境变量代表获取的token。
DASH_TOKEN=$(kubectl get secrets -n kube-system dashboard-admin-token-jv77h -o jsonpath={.data.token} | base64 -d)
//将k8s集群的配置信息写入kubeconfig配置文件中。
kubectl config set-cluster kubernetes --server=192.168.8.10:6443 --kubeconfig=/root/.dashboard-admin.conf
kubectl config set-credentials dashboard-admin --token=$DASH_TOKEN --kubeconfig=/root/.dashboard-admin.conf
kubectl config set-context dashboard-admin@kubernetes --cluster=kubernetes --user=dashboard-admin --kubeconfig=/root/.dashboard-admin.conf
kubectl config use-context dashboard-admin@kubernetes --kubeconfig=/root/.dashboard-admin.conf

4、从浏览器选择kubeconfig的登录方式,然后导入配置文件即可。

二、Scope

//可以直接运行此命令

kubectl apply -f "https://cloud.weave.works/k8s/scope.yaml?k8s-version=$(kubectl version | base64 | tr -d '\n')&k8s-service-type=NodePort"

如果访问不了网站,参考docker第十一章

三、Prometheus

PS: 在这里部署的prometheus,是使用的coreos提供的prometheus项目。

MetricsServer:是k8s集群资源使用情况的聚合器,收集数据给k8s集群内使用,如kubectl,hpa,scheduler等。

Prometheus Operator: 是一个系统检测和警报工具箱,用来存储监控数据。

Prometheus node-exporter:收集k8s集群资源的数据,指定告警规则。

Prometheus:收集apiserver,scheduler,controller-manager,kubelet组件的数据,通过http协议传输。

1、//克隆prometheus的项目地址到本地。

(打开github.com,搜索kube-prometheus,第一个项目prometheus-operator/kube-prometheus

找到对应版本)

git clone https://github.com/prometheus-operator/kube-prometheus.git

download zip

2、修改grafana-service.yaml文件,更改为nodePort的暴露方式,暴露端口为31001.

[root@master manifests]# pwd
/root/kube-prometheus-0.6.0/manifests
[root@master manifests]# vim grafana-service.yaml
spec:
  type: NodePort
  ports:
  - name: http
    port: 3000
    targetPort: http
    nodePort: 31001
  selector:

3、修改prometheus-service.yaml文件,更改为nodePort的暴露方式,暴露端口为31002.

[root@master manifests]# vim prometheus-service.yaml
...
spec:
  type: NodePort
  ports:
  - name: web
    port: 9090
    targetPort: web
    nodePort: 31002
...

4、修改alertmanager-service.yaml文件,更改为nodePort的暴露方式,暴露端口为31003.

[root@master manifests]# vim alertmanager-service.yaml
...
spec:
  type: NodePort
  ports:
  - name: web
    port: 9093
    targetPort: web
    nodePort: 31003
  selector:
...

5、将这个目录中的yaml文件,全部运行。是运行以上yaml文件的基础环境配置。有可能因为目录内yaml文件过多,一次不能全部运行,所以咋运行的时候,多运行两遍

cd /root/kube-prometheus-0.6.0/manifests

kubectl create -f setup/

6、运行主yaml文件。有可能因为目录内yaml文件过多,一次不能全部运行,所以运行的时候,多运行两遍

cd /root/kube-prometheus-0.6.0

kubectl create -f manifests/

7、浏览器访问grafana

用户名: admin

密码: admin

8、导入监控模板

https://grafana.com/grafana/dashboards/8588

------------------------------------------------------

kuboard:

   k8s图形化管理工具  

网站:https://kuboard.cn

安装:使用华为源

kubectl apply -f https://addons.kuboard.cn/kuboard/kuboard-v3-swr.yaml

查看部署情况:

kubectl get pod -n kuboard

部署后访问:

http://192.168.8.10:30080

添加k8s集群

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
4月前
|
存储 运维 监控
Kubernetes 集群监控与日志管理实践
【5月更文挑战第28天】在微服务架构日益普及的当下,容器编排工具如 Kubernetes 已成为运维工作的核心。有效的集群监控和日志管理是确保系统稳定性和服务可靠性的关键。本文将深入探讨 Kubernetes 集群的监控策略,以及如何利用现有的工具进行日志收集、存储和分析,以实现对集群健康状况的实时掌握和问题快速定位。
|
4月前
|
存储 监控 Kubernetes
Kubernetes 集群监控与日志管理实践
【5月更文挑战第27天】 在微服务架构日益普及的当下,容器化技术与编排工具如Kubernetes已成为现代云原生应用的基石。然而,随着集群规模的不断扩大和复杂性的增加,如何有效监控和管理这些动态变化的服务成为了维护系统稳定性的关键。本文将深入探讨Kubernetes环境下的监控策略和日志管理的最佳实践,旨在为运维人员提供一套系统的解决思路,确保应用性能的最优化和问题的快速定位。
|
1月前
|
Kubernetes 监控 Cloud Native
"解锁K8s新姿势!Cobra+Client-go强强联手,打造你的专属K8s监控神器,让资源优化与性能监控尽在掌握!"
【8月更文挑战第14天】在云原生领域,Kubernetes以出色的扩展性和定制化能力引领潮流。面对独特需求,自定义插件成为必要。本文通过Cobra与Client-go两大利器,打造一款监测特定标签Pods资源使用的K8s插件。Cobra简化CLI开发,Client-go则负责与K8s API交互。从初始化项目到实现查询逻辑,一步步引导你构建个性化工具,开启K8s集群智能化管理之旅。
35 2
|
1月前
|
Prometheus Kubernetes 监控
Kubernetes(K8S) 监控 Prometheus + Grafana
Kubernetes(K8S) 监控 Prometheus + Grafana
123 2
|
16天前
|
运维 Kubernetes 监控
Loki+Promtail+Grafana监控K8s日志
综上,Loki+Promtail+Grafana 监控组合对于在 K8s 环境中优化日志管理至关重要,它不仅提供了强大且易于扩展的日志收集与汇总工具,还有可视化这些日志的能力。通过有效地使用这套工具,可以显著地提高对应用的运维监控能力和故障诊断效率。
35 0
|
1月前
|
人工智能 运维 Kubernetes
智能化运维:KoPylot为k8S带来AI监控诊断
智能化运维:KoPylot为k8S带来AI监控诊断
|
1月前
|
Prometheus 监控 Kubernetes
在k8S中,状态码监控是怎么做的?
在k8S中,状态码监控是怎么做的?
|
1月前
|
Prometheus 监控 Kubernetes
在k8S中,blackbox主要是监控什么的?
在k8S中,blackbox主要是监控什么的?
|
1月前
|
Prometheus Kubernetes 监控
在k8S中,etcd是怎么监控的?
在k8S中,etcd是怎么监控的?