目录
随着容器化技术的快速发展,Kubernetes已经成为企业部署和管理微服务、云原生应用的首选。然而,随着集群规模的扩大和复杂性的增加,如何有效地监控K8s集群的性能、资源使用情况以及应用的健康状况,成为了运维人员必须面对的挑战。Rancher作为一款开源的企业级K8s管理平台,提供了强大的监控能力,帮助用户实现集群的全方位掌控。
监控K8s集群的重要性不言而喻。首先,通过监控可以实时了解集群的资源使用情况,包括CPU、内存、磁盘、网络等关键指标,从而确保集群的稳定性和可用性。其次,监控可以帮助运维人员快速发现集群中的异常和故障,及时进行干预和修复,避免业务中断。此外,监控还可以为集群的扩容、优化和迁移提供数据支持,帮助企业实现更高效的资源利用和管理
Rancher作为一款集成化的K8s管理平台,为用户提供了全面的监控能力。以下是Rancher监控K8s集群的几个优势:
易用性:Rancher提供了直观的图形化界面,用户可以通过简单的操作就能实现对集群的实时监控和告警管理。
灵活性:Rancher支持多种监控插件和工具,如Prometheus、Grafana等,用户可以根据自己的需求选择合适的监控方案。
可扩展性:Rancher的监控能力可以随着集群规模的扩大而扩展,满足各种规模的K8s集群监控需求。
安全性:Rancher遵循严格的权限管理策略,确保只有授权的用户才能访问和修改监控数据。
官网:https://docs.rancher.cn/
Rancher 和 k8s 都是用来作为容器的调度与编排系统。但是 rancher 不仅能够管理应用容器,更重要的一点是能够管理 k8s 集群。 Rancher2.x 底层基于 k8s 调度引擎,通过 Rancher 的封装,用户可以在不熟悉 k8s 概念的情况下轻松的通过 Rancher 来部署容器到k8s集群当中。
环境准备
主机名 | IP地址 | 主机类型 | 资源配额 |
master01 | 192.168.83.30 | k8s集群控制节点 | 4C4G |
node01 | 192.168.83.40 | k8s集群工作节点 | 4C4G |
node02 | 192.168.83.50 | k8s集群工作节点 | 4C4G |
rancher | 192.168.83.60 | Rancher节点 | 4C8G |
//在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
在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
浏览器访问Rancher服务端IP地址,由于没有SSL证书,忽略直接进入即可
第一次访问可能会拒绝,需要刷新界面,而后选择中文,输入密码,默认用户名称为admin
登录后如是英文页面,可点击右下角语言选项选择中文
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 59s
-
- NAME READY UP-TO-DATE AVAILABLE AGE
- deployment.apps/cattle-cluster-agent 1/1 1 1 2m33s
-
- NAME DESIRED CURRENT READY AGE
- replicaset.apps/cattle-cluster-agent-54b795cff7 0 0 0 2m33s
- replicaset.apps/cattle-cluster-agent-7cc4d8b7df 1 1 1 59s
点击【启用监控以查看实时监控】
【监控组件版本】选择 0.2.1,其他的默认即可
点击【启用监控】,启动监控时间可能比较长,需要等待10分钟左右
点击【仪表盘】进入 k8s 集群仪表盘界面
#创建名称空间 namespace
点击左侧菜单【Namespaces】,再点击右侧【Create】
【Name】输入 rancher-test,【Description】选填可自定义
点击右下角【Create】
在master01服务器中查看
- [root@master01 ~]#kubectl get ns rancher-test
- NAME STATUS AGE
- rancher-test Active 37s
创建 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 80s
-
- NAME 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
点击左侧菜单【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 6m6s
-
- NAME 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 6m6s
-
- NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
- service/nginx-rancher-svc NodePort 10.96.136.41
80:32000/TCP 35s
访问集群任意节点的32000端口
管理告警通知:Rancher支持多种告警通知方式,如邮件、Slack等。用户可以设置告警规则,当集群中的某个指标超过阈值时,系统将自动发送告警通知给指定的接收者。
例如添加通知
通过Rancher的监控功能,用户可以实现对K8s集群的全方位掌控。无论是实时查看集群状态、快速定位故障还是进行性能优化,Rancher都能提供有力的支持。随着容器化技术的不断发展,Rancher将继续优化和完善其监控能力,为企业提供更加稳定、高效和安全的K8s管理方案。