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

【云原生】Kubernetes----Rancher助力Kubernetes监控

目录

引言

一、为什么需要监控K8s集群?

二、Rancher监控K8s集群的优势

三、Rancher和k8s的区别

四、Rancher 安装及配置

(一)安装rancher

1.下载镜像

2.运行容器

3.登录Rancher平台

4.添加集群

5.查看集群

6.Rancher 部署监控系统

7.使用Rancher仪表盘管理 k8s 集群

7.1 创建名称空间

7.2 创建Deployment资源

7.3 创建 service

7.4 访问测试

8.其它操作


引言

随着容器化技术的快速发展,Kubernetes已经成为企业部署和管理微服务、云原生应用的首选。然而,随着集群规模的扩大和复杂性的增加,如何有效地监控K8s集群的性能、资源使用情况以及应用的健康状况,成为了运维人员必须面对的挑战。Rancher作为一款开源的企业级K8s管理平台,提供了强大的监控能力,帮助用户实现集群的全方位掌控。

一、为什么需要监控K8s集群?

监控K8s集群的重要性不言而喻。首先,通过监控可以实时了解集群的资源使用情况,包括CPU、内存、磁盘、网络等关键指标,从而确保集群的稳定性和可用性。其次,监控可以帮助运维人员快速发现集群中的异常和故障,及时进行干预和修复,避免业务中断。此外,监控还可以为集群的扩容、优化和迁移提供数据支持,帮助企业实现更高效的资源利用和管理

二、Rancher监控K8s集群的优势

Rancher作为一款集成化的K8s管理平台,为用户提供了全面的监控能力。以下是Rancher监控K8s集群的几个优势:

易用性:Rancher提供了直观的图形化界面,用户可以通过简单的操作就能实现对集群的实时监控和告警管理。

灵活性:Rancher支持多种监控插件和工具,如Prometheus、Grafana等,用户可以根据自己的需求选择合适的监控方案。

可扩展性:Rancher的监控能力可以随着集群规模的扩大而扩展,满足各种规模的K8s集群监控需求。

安全性:Rancher遵循严格的权限管理策略,确保只有授权的用户才能访问和修改监控数据。

官网:https://docs.rancher.cn/

三、Rancher和k8s的区别

Rancher 和 k8s 都是用来作为容器的调度与编排系统。但是 rancher 不仅能够管理应用容器,更重要的一点是能够管理 k8s 集群。 Rancher2.x 底层基于 k8s 调度引擎,通过 Rancher 的封装,用户可以在不熟悉 k8s 概念的情况下轻松的通过 Rancher 来部署容器到k8s集群当中。

四、Rancher 安装及配置

环境准备

主机名IP地址主机类型资源配额
master01192.168.83.30k8s集群控制节点4C4G
node01192.168.83.40k8s集群工作节点4C4G
node02192.168.83.50k8s集群工作节点4C4G
rancher192.168.83.60Rancher节点4C8G

(一)安装rancher

1.下载镜像

//在master01节点下载rancher-agent镜像
[root@master01 rancher]#docker pull rancher/rancher-agent:v2.5.7

//在 rancher 节点下载 rancher 镜像
[root@rancher ~]#docker pull rancher/rancher:v2.5.7

2.运行容器

在Rancher节点,即服务端,进行操作

docker run -d --restart=unless-stopped -p 80:80 -p 443:443 --privileged --name rancher rancher/rancher:v2.5.7

#运行容器

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

docker run: Docker命令,用于创建并运行一个新的容器。

-d: 这个标志表示在后台运行容器。

--restart=unless-stopped: 这个选项设置了容器的重启策略。当Docker守护进程重启时,这个容器将被重新启动,除非它之前被用户手动停止了。

-p 80:80: 这个参数用于发布容器内部的端口到宿主机。这里,容器内的80端口映射到了宿主机的80端口,允许外部访问容器运行的服务。同样地,-p 443:443用于HTTPS流量

--privileged: 这个标志给予容器更多的权限,相当于root权限。它允许容器访问更多的宿主机资源,例如设备访问。

--name rancher: 这个选项指定了容器的名字。给容器命名可以帮助管理和识别特定的容器。

rancher/rancher:v2.5.7: 这是容器镜像的仓库名和标签。rancher/rancher是Rancher官方提供的Docker镜像仓库,v2.5.7是具体的版本号。

[root@rancher ~]#docker run -d --restart=unless-stopped -p 80:80 -p 443:443 --privileged --name rancher rancher/rancher:v2.5.7
bffc75ab763fc0fc43f87a159ec1cd98f450ce8a6b0c336e28c123b78cc142d1
[root@rancher ~]#docker ps
CONTAINER ID   IMAGE                    COMMAND           CREATED         STATUS         PORTS                                                                      NAMES
bffc75ab763f   rancher/rancher:v2.5.7   "entrypoint.sh"   4 seconds ago   Up 2 seconds   0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp   rancher

3.登录Rancher平台

浏览器访问Rancher服务端IP地址,由于没有SSL证书,忽略直接进入即可

第一次访问可能会拒绝,需要刷新界面,而后选择中文,输入密码,默认用户名称为admin

登录后如是英文页面,可点击右下角语言选项选择中文

4.添加集群

Rancher 管理已存在的 k8s 集群
选择【添加集群】,点击【导入】
【集群名称】设置为 k8s-cluster,点击【创建】
选择复制第三条命令绕过证书检查导入 k8s 集群

在master01节点上执行复制的命令

[root@master01 rancher]#curl --insecure -sfL https://192.168.83.60/v3/import/kvcpwhv4r5rlqbvccgznpxkmrkmmd9bzvl5nc46n2t9zjhs6rtttps_c-s2frn.yaml | kubectl apply -f -
error: no objects passed to apply
#第一次失败,需要再执行一次
[root@master01 rancher]#curl --insecure -sfL https://192.168.83.60/v3/import/kvcpwhv4r5rlqbvccgznpxkmrkmmd9bzvl5nc46n2t9zjhs6rtttps_c-s2frn.yaml | kubectl apply -f -
clusterrole.rbac.authorization.k8s.io/proxy-clusterrole-kubeapiserver created
clusterrolebinding.rbac.authorization.k8s.io/proxy-role-binding-kubernetes-master created
namespace/cattle-system created
serviceaccount/cattle created
clusterrolebinding.rbac.authorization.k8s.io/cattle-admin-binding created
secret/cattle-credentials-a0245e9 created
clusterrole.rbac.authorization.k8s.io/cattle-admin created
deployment.apps/cattle-cluster-agent created
------------------------------------------------------------------------------------
[root@master01 rancher]#kubectl get ns cattle-system
NAME              STATUS   AGE
cattle-system     Active   118s
[root@master01 rancher]#kubectl get all -n cattle-system 
NAME                                        READY   STATUS    RESTARTS   AGE
pod/cattle-cluster-agent-7cc4d8b7df-cjpwk   1/1     Running   0          59sNAME                                   READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/cattle-cluster-agent   1/1     1            1           2m33sNAME                                              DESIRED   CURRENT   READY   AGE
replicaset.apps/cattle-cluster-agent-54b795cff7   0         0         0       2m33s
replicaset.apps/cattle-cluster-agent-7cc4d8b7df   1         1         1       59s

5.查看集群

6.Rancher 部署监控系统

点击【启用监控以查看实时监控】
【监控组件版本】选择 0.2.1,其他的默认即可
点击【启用监控】,启动监控时间可能比较长,需要等待10分钟左右

7.使用Rancher仪表盘管理 k8s 集群

点击【仪表盘】进入 k8s 集群仪表盘界面

7.1 创建名称空间

#创建名称空间 namespace
点击左侧菜单【Namespaces】,再点击右侧【Create】
【Name】输入 rancher-test,【Description】选填可自定义
点击右下角【Create】

在master01服务器中查看

[root@master01 ~]#kubectl get ns rancher-test 
NAME           STATUS   AGE
rancher-test   Active   37s
7.2 创建Deployment资源

创建 Deployment 资源
点击左侧菜单【Deployments】,再点击右侧【Create】
【Namespace】下拉选择rancher-test ,【Name】输入 nginx-rancher-test,【Replicas】输入 3
点击中间选项【Container】,【Container Image】输入 nginx:1.18.0,【Pull Policy】选择 IfNotPresent
在【Pod Labels】下点击【Add Lable】,【Key】输入 app,【Value】输入 nginx
点击中间选项【Labels and Annotations】,点击【Add Label】,【Key】输入 app,【Value】输入 nginx
点击右下角【Create】

在master01服务器中查看

[root@master01 ~]#kubectl get deployments.apps,pod -n rancher-test 
NAME                                 READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/nginx-rancher-test   3/3     3            3           80sNAME                                      READY   STATUS    RESTARTS   AGE
pod/nginx-rancher-test-6978bb677f-4ngph   1/1     Running   0          80s
pod/nginx-rancher-test-6978bb677f-dptg5   1/1     Running   0          80s
pod/nginx-rancher-test-6978bb677f-qzx5n   1/1     Running   0          80s
7.3 创建 service

点击左侧菜单【Services】,再点击右侧【Create】
点击【Node Port】
【Namespace】下拉选择 rancher-test,【Name】输入 nginx-rancher-svc
【Port Name】输入 web,【Listening Port】输入 80,【Target Port】输入 80,【Node Port】输入 32000
点击中间选项【Selectors】,【Key】输入 app,【Value】输入 nginx
点击右下角【Create】
点击【nginx-rancher-test】查看 service 是否已关联上 Pod

在master01服务器中查看

[root@master01 ~]#kubectl get deployments.apps,pod,svc -n rancher-test 
NAME                                 READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/nginx-rancher-test   3/3     3            3           6m6sNAME                                      READY   STATUS    RESTARTS   AGE
pod/nginx-rancher-test-6978bb677f-4ngph   1/1     Running   0          6m6s
pod/nginx-rancher-test-6978bb677f-dptg5   1/1     Running   0          6m6s
pod/nginx-rancher-test-6978bb677f-qzx5n   1/1     Running   0          6m6sNAME                        TYPE       CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE
service/nginx-rancher-svc   NodePort   10.96.136.41   <none>        80:32000/TCP   35s
7.4 访问测试

访问集群任意节点的32000端口

8.其它操作

管理告警通知:Rancher支持多种告警通知方式,如邮件、Slack等。用户可以设置告警规则,当集群中的某个指标超过阈值时,系统将自动发送告警通知给指定的接收者。

例如添加通知

通过Rancher的监控功能,用户可以实现对K8s集群的全方位掌控。无论是实时查看集群状态、快速定位故障还是进行性能优化,Rancher都能提供有力的支持。随着容器化技术的不断发展,Rancher将继续优化和完善其监控能力,为企业提供更加稳定、高效和安全的K8s管理方案。

相关文章:

  • 开发uniapp 小程序时遇到的问题
  • DeepSORT(目标跟踪算法) 卡尔曼滤波 状态向量是如何映射到观测向量(测量向量)的即观测矩阵的构建方式
  • MySQL怎么为表添加描述
  • PR插件-图层抖动弹跳缩放旋转模糊闪烁缩放抖动动作效果预设
  • spring管理的对象通过@Init注解修饰的方法不会在new对象的时候触发
  • 【面向就业的Linux基础】从入门到熟练,探索Linux的秘密(二)
  • css3新增的伪类有哪些
  • mysql8.0 sql_mode与ONLY_FULL_GROUP_BY报错
  • 《广告数据定量分析》核心内容——搜索广告投放优化方法
  • 湖州等保测评公司有几家?在那里?电话多少?
  • mtk镜像签名
  • 13600KF+3060Ti,虚拟机安装macOS 14,2024年6月
  • java算法:快速排序
  • 车载网络安全指南 概述(一)
  • PHP实名认证接口开发示例、银行卡实名认证API
  • 时间复杂度分析经典问题——最大子序列和
  • download使用浅析
  • IOS评论框不贴底(ios12新bug)
  • Javascript设计模式学习之Observer(观察者)模式
  • JS实现简单的MVC模式开发小游戏
  • Mysql5.6主从复制
  • Python学习之路13-记分
  • scala基础语法(二)
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • Terraform入门 - 3. 变更基础设施
  • VUE es6技巧写法(持续更新中~~~)
  • webpack项目中使用grunt监听文件变动自动打包编译
  • 记一次用 NodeJs 实现模拟登录的思路
  • 每天10道Java面试题,跟我走,offer有!
  • 区块链共识机制优缺点对比都是什么
  • 让你的分享飞起来——极光推出社会化分享组件
  • 算法-图和图算法
  • 通过npm或yarn自动生成vue组件
  • gunicorn工作原理
  • #laravel 通过手动安装依赖PHPExcel#
  • (1)Android开发优化---------UI优化
  • (2)MFC+openGL单文档框架glFrame
  • (2015)JS ES6 必知的十个 特性
  • (2024,Vision-LSTM,ViL,xLSTM,ViT,ViM,双向扫描)xLSTM 作为通用视觉骨干
  • (c语言)strcpy函数用法
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (附源码)基于ssm的模具配件账单管理系统 毕业设计 081848
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (译) 函数式 JS #1:简介
  • (转)h264中avc和flv数据的解析
  • (转)编辑寄语:因为爱心,所以美丽
  • ... fatal error LINK1120:1个无法解析的外部命令 的解决办法
  • .net wcf memory gates checking failed
  • .NET 指南:抽象化实现的基类
  • .NET/C# 编译期间能确定的相同字符串,在运行期间是相同的实例
  • .NET业务框架的构建
  • .NET中的十进制浮点类型,徐汇区网站设计
  • .vollhavhelp-V-XXXXXXXX勒索病毒的最新威胁:如何恢复您的数据?
  • @ComponentScan比较
  • @NestedConfigurationProperty 注解用法