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

从零搭建 K8s 集群 + Prometheus 监控 + Harbor 私有仓库 + 钉钉告警(RHEL 9 实战)

记录一下最近在 RHEL 9 环境下从零搭建 K8s 集群、Prometheus 监控体系、Harbor 私有镜像仓库的完整过程踩了不少坑全部记录下来。环境说明主机名IP角色系统Ubuntu192.168.137.128Prometheus Grafana AlertmanagerUbuntu 22.04k8s-master192.168.137.100K8s MasterRHEL 9.5k8s-node1192.168.137.101K8s NodeRHEL 9.5k8s-node2192.168.137.102K8s NodeRHEL 9.5k8s-node3192.168.137.103K8s NodeRHEL 9.5k8s-devops192.168.137.104Harbor 镜像仓库RHEL 9.5整体架构Ubuntu 监控主机 Prometheus(:9090) ──→ Grafana(:3000) Alertmanager(:9093) ──→ 钉钉群 │ │ 采集指标 ▼ K8s 集群 (master 3 node) nginx 微服务(3副本) Flannel 网络 │ │ 拉镜像 ▼ Harbor 私有仓库 (devops)第二段RHEL 基础环境一、RHEL 9 基础环境准备RHEL 9.5 没有注册订阅的话 yum 源是空的第一步要解决这个问题。1.1 配置 CentOS Stream 9 阿里云镜像源rm -f /etc/yum.repos.d/*.repo cat /etc/yum.repos.d/centos.repo EOF [baseos] nameCentOS Stream 9 - BaseOS baseurlhttps://mirrors.aliyun.com/centos-stream/9-stream/BaseOS/x86_64/os/ gpgcheck0 enabled1 [appstream] nameCentOS Stream 9 - AppStream baseurlhttps://mirrors.aliyun.com/centos-stream/9-stream/AppStream/x86_64/os/ gpgcheck0 enabled1 EOF yum clean all yum makecache1.2 关闭防火墙、SELinux、swapsystemctl stop firewalld systemctl disable firewalld setenforce 0 sed -i s/^SELINUXenforcing/SELINUXdisabled/ /etc/selinux/config swapoff -a sed -i /swap/d /etc/fstab1.3 配置 hostscat /etc/hosts EOF 192.168.137.100 k8s-master 192.168.137.101 k8s-node1 192.168.137.102 k8s-node2 192.168.137.103 k8s-node3 192.168.137.104 k8s-devops EOF1.4 加载内核模块和参数cat /etc/modules-load.d/k8s.conf EOF overlay br_netfilter EOF modprobe overlay modprobe br_netfilter cat /etc/sysctl.d/k8s.conf EOF net.bridge.bridge-nf-call-iptables 1 net.bridge.bridge-nf-call-ip6tables 1 net.ipv4.ip_forward 1 EOF sysctl --system1.5 安装 Dockeryum install -y yum-utils yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum install -y docker-ce docker-ce-cli containerd.io mkdir -p /etc/docker cat /etc/docker/daemon.json EOF { registry-mirrors: [https://mirror.ccs.tencentyun.com], exec-opts: [native.cgroupdriversystemd], storage-driver: overlay2 } EOF systemctl daemon-reload systemctl enable docker systemctl restart docker 截图docker version 输出以上步骤所有 K8s 节点都要执行。我写了 Shell 脚本通过 SSH 批量执行一次搞定 5 台机器。第三段K8s 集群搭建二、搭建 K8s 集群2.1 安装 kubeadmmaster 3 nodecat /etc/yum.repos.d/kubernetes.repo EOF [kubernetes] nameKubernetes baseurlhttps://mirrors.aliyun.com/kubernetes-new/core/stable/v1.30/rpm/ gpgcheck0 enabled1 EOF yum makecache yum install -y kubelet kubeadm kubectl2.2 配置 containerd这一步很关键不配的话 kubeadm init 会报required cgroups disabled。containerd config default /etc/containerd/config.toml sed -i s/SystemdCgroup false/SystemdCgroup true/ /etc/containerd/config.toml sed -i s|sandbox_image registry.k8s.io/pause:3.10.1|sandbox_image registry.aliyuncs.com/google_containers/pause:3.10| /etc/containerd/config.toml systemctl restart containerd systemctl enable kubelet提前拉取 pause 镜像并打标签crictl pull registry.aliyuncs.com/google_containers/pause:3.10 ctr -n k8s.io images tag registry.aliyuncs.com/google_containers/pause:3.10 registry.k8s.io/pause:3.10.12.3 初始化 Masterkubeadm init \ --apiserver-advertise-address192.168.137.100 \ --image-repositoryregistry.aliyuncs.com/google_containers \ --kubernetes-versionv1.30.14 \ --service-cidr10.96.0.0/12 \ --pod-network-cidr10.244.0.0/16配置 kubectlmkdir -p $HOME/.kube cp -i /etc/kubernetes/admin.conf $HOME/.kube/config chown $(id -u):$(id -g) $HOME/.kube/config2.4 安装 Flannel 网络插件kubectl apply -f https://cdn.jsdelivr.net/gh/flannel-io/flannelmaster/Documentation/kube-flannel.yml 截图kubectl get nodes 显示 master Ready2.5 Node 加入集群每个 node 先配置 containerd 和 pause 镜像同 2.2然后执行kubeadm join 192.168.137.100:6443 --token token --discovery-token-ca-cert-hash sha256:hash 截图kubectl get nodes 显示 4 个节点全部 Ready第四段微服务部署Harbor三、部署微服务应用kubectl create namespace demo-app kubectl create deployment nginx-web --image192.168.137.104/library/nginx:1.25 --replicas3 -n demo-app kubectl expose deployment nginx-web --typeNodePort --port80 --target-port80 -n demo-app kubectl get pods -n demo-app -o wide kubectl get svc -n demo-app 截图3 个 Pod 全部 Running 截图浏览器显示 Nginx 欢迎页四、搭建 Harbor 私有镜像仓库4.1 安装 Docker Composecurl -L https://ghfast.top/https://github.com/docker/compose/releases/download/v2.27.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose chmod x /usr/local/bin/docker-compose4.2 下载安装 Harborcd /opt wget https://ghfast.top/https://github.com/goharbor/harbor/releases/download/v2.11.0/harbor-offline-installer-v2.11.0.tgz tar xf harbor-offline-installer-v2.11.0.tgz cd harbor cp harbor.yml.tmpl harbor.yml sed -i s/hostname: reg.mydomain.com/hostname: 192.168.137.104/ harbor.yml sed -i s/^https:/#https:/ harbor.yml sed -i s/^ port: 443/# port: 443/ harbor.yml sed -i s/^ certificate:/# certificate:/ harbor.yml sed -i s/^ private_key:/# private_key:/ harbor.yml ./install.sh 截图位置install.sh 执行完成所有容器 Started4.3 推送镜像到 Harbordocker login 192.168.137.104 -u admin -p Harbor12345 docker tag nginx:1.25 192.168.137.104/library/nginx:1.25 docker push 192.168.137.104/library/nginx:1.25 截图Harbor Web 界面显示 nginx 镜像4.4 K8s 对接 Harbor每个 K8s 节点配置 containerd 信任 Harbormkdir -p /etc/containerd/certs.d/192.168.137.104 cat /etc/containerd/certs.d/192.168.137.104/hosts.toml EOF server http://192.168.137.104 [host.http://192.168.137.104] capabilities [pull, resolve] skip_verify true EOF systemctl restart containerd更新 Deploymentkubectl set image deployment/nginx-web nginx192.168.137.104/library/nginx:1.25 -n demo-app第五段Prometheus 监控告警踩坑命令速查五、Prometheus 监控体系5.1 核心配置 prometheus.ymlglobal: scrape_interval: 15s scrape_configs: - job_name: prometheus static_configs: - targets: [localhost:9090] - job_name: ubuntu-monitor static_configs: - targets: [localhost:9100] - job_name: redhat-servers static_configs: - targets: - 192.168.137.100:9100 - 192.168.137.101:9100 - 192.168.137.102:9100 - 192.168.137.103:9100 - 192.168.137.104:9100 - job_name: k8s-nodes static_configs: - targets: - 192.168.137.100:10250 - 192.168.137.101:10250 - 192.168.137.102:10250 - 192.168.137.103:10250 scheme: https tls_config: insecure_skip_verify: true bearer_token_file: /etc/prometheus/k8s-token - job_name: k8s-apiserver static_configs: - targets: [192.168.137.100:6443] scheme: https tls_config: insecure_skip_verify: true bearer_token_file: /etc/prometheus/k8s-token5.2 告警规则groups: - name: host_alerts rules: - alert: HostDown expr: up 0 for: 1m labels: severity: critical annotations: summary: 主机 {{ $labels.instance }} 宕机 - alert: HighCPU expr: 100 - (avg by(instance)(rate(node_cpu_seconds_total{modeidle}[5m])) * 100) 85 for: 5m labels: severity: warning annotations: summary: {{ $labels.instance }} CPU超过85% - alert: HighMemory expr: (1 - node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes) * 100 90 for: 5m labels: severity: warning annotations: summary: {{ $labels.instance }} 内存超过90% - alert: DiskFull expr: (1 - node_filesystem_avail_bytes{fstype!tmpfs} / node_filesystem_size_bytes{fstype!tmpfs}) * 100 85 for: 5m labels: severity: warning annotations: summary: {{ $labels.instance }} 磁盘超过85%5.3 Grafana 配置apt-get install -y musl wget https://mirrors.tuna.tsinghua.edu.cn/grafana/apt/pool/main/g/grafana/grafana_11.1.0_amd64.deb dpkg -i grafana_11.1.0_amd64.deb systemctl enable grafana-server systemctl start grafana-server浏览器打开 http://192.168.137.128:3000admin/admin 登录Connections → Data Sources → Add → Prometheus → URL 填 http://localhost:9090 → Save TestDashboards → Import → 输入 1860 → Load → Import 截图Prometheus Targets 页面所有节点 UP 截图Grafana 面板显示 K8s 节点监控数据5.4 钉钉告警Alertmanager 配置route: group_by: [alertname] group_wait: 30s group_interval: 5m repeat_interval: 3h receiver: dingtalk receivers: - name: dingtalk webhook_configs: - url: http://localhost:8060/dingtalk/webhook1/send send_resolved: true 截图钉钉群收到 HostDown 告警消息六、踩坑记录问题原因解决方案RHEL 9 无 yum 源未注册订阅配置 CentOS Stream 9 阿里云镜像源kubeadm init 报 cgroups disabledcontainerd 未配置 SystemdCgroup修改 config.toml 设为 truepause 镜像拉取失败registry.k8s.io 不可达阿里云拉取 ctr images tag 改名Docker Hub 被墙国内网络限制Ubuntu 加速器拉取 → docker save → scp → ctr importHarbor 重启后服务停止重启 Docker 停掉所有容器docker-compose up -dDNS 解析失败resolv.conf 配置错误配置阿里云 DNS 223.5.5.5Windows 脚本报错换行符 \r\ndos2unix 转换七、常用命令速查kubectl get nodes kubectl get pods -n ns -o wide kubectl get svc -n ns kubectl create namespace name kubectl create deployment name --imageimg --replicasn -n ns kubectl expose deployment name --typeNodePort --port80 -n ns kubectl set image deployment/name containernew-image -n ns kubectl delete pods --all -n ns kubectl logs pod -n ns kubectl describe pod pod -n ns docker pull / tag / push / save / load docker login harbor-ip -u admin -p Harbor12345 crictl pull image ctr -n k8s.io images import file.tar ctr -n k8s.io images tag old new systemctl start/stop/restart/status/enable service promtool check config /etc/prometheus/prometheus.yml

相关文章:

从零搭建 K8s 集群 + Prometheus 监控 + Harbor 私有仓库 + 钉钉告警(RHEL 9 实战)

记录一下最近在 RHEL 9 环境下从零搭建 K8s 集群、Prometheus 监控体系、Harbor 私有镜像仓库的完整过程,踩了不少坑,全部记录下来。 环境说明 主机名IP角色系统Ubuntu192.168.137.128Prometheus Grafana AlertmanagerUbuntu 22.04k8s-master192.168…...

Kubernetes智能运维实践:基于大语言模型的AI副驾驶工具详解

1. 项目概述:当Kubernetes遇上AI副驾驶如果你和我一样,每天都要和成百上千个Kubernetes Pod、Service、Ingress打交道,那一定经历过这样的时刻:凌晨三点被告警叫醒,面对一个不断重启的Pod,日志刷屏却找不到…...

达梦数据库体系结构学习

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、数据库与实例概念二、DM 逻辑存储结构三、物理存储结构四、内存结构五、线程结构总结前言 众所周知,信息技术应用创新(信创&#xf…...

出轨小三就会净身出户?告诉你出轨离婚财产分割的5个真相

“我老公出轨了,我要让他净身出户!”这是我在咨询室里听到最多的一句话。每当我无奈地告诉当事人“法律不支持净身出户”时,对方往往难以置信——为什么出轨的人还能分走一半财产?今天,湖南长沙知名婚姻家事律师、高评…...

Windows热键冲突终极指南:Hotkey Detective一键定位占用程序

Windows热键冲突终极指南:Hotkey Detective一键定位占用程序 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective 你…...

根据“十五五”规划制定的容灾备份体系

在“十五五”规划明确提出推进容灾备份体系建设的背景下,数据中心灾备发展正迎来重要变革:过去,灾备建设多是用户自主选择、行业软性建议,如今,合规收紧、病毒升级、技术迭代三重压力叠加,彻底重构了用户灾…...

Android Navigation 组件全面讲解

目录 一、Navigation 的基本使用 1.1 Navigation 的三大核心概念 1.2 环境配置 1.3 实现步骤详解 第一步:创建 Navigation Graph (XML) 第二步:创建 Activity activity_main.xml : MainActivity.java : 1. 获取导航遥控器…...

嵌入式Web服务器事先,控制开发板硬件(流程概述)

嵌入式 Web 控制硬件:Boa CGI JSON-RPC 完整实现 一、系统架构 开发板(i.MX6ULL)运行: Boa Web 服务器:提供静态页面和 CGI 支持。 RPC 服务端(常驻后台):基于 JSON‑RPC 接收调…...

项目中**LabVIEW 位操作逻辑**的完整、清晰解释,以及与 C# 实现的对应关系

以下是针对项目中LabVIEW 位操作逻辑的完整、清晰解释,以及与 C# 实现的对应关系。 LabVIEW 中关键位操作函数 你的描述(“数字转换成 bool 数组 → 反转一维数组 → 循环检查”)主要涉及以下两个核心 LabVIEW 函数: Number To Boolean Array(数值转布尔数组) 位置:Pr…...

C语言数据类型与变量

一、数据类型1.字符型char2.整形short 【int】intlong 【int】long long 【int】3.浮点型floatdoublelong double4.布尔型(使用需要包含头文件<stdbool.h>)_Bool取值为true或false5.各种数据类型的长度需要用到sizeof操作符sizeof 是⼀个关键字&#xff0c;也是操作符&am…...

专为视障人士设计的免费辅助工具

软件介绍 NVDA是一款免费的屏幕阅读器&#xff0c;专门为视障人士设计。它通过语音合成和盲文显示两种方式&#xff0c;帮助视障人士实现对电脑的无障碍操作&#xff0c;缩小数字鸿沟。 轻量化与基础操作 软件是绿色版&#xff0c;无需安装&#xff0c;双击"nvda.exe&qu…...

元组、列表、集合、字典和切片

列表&#xff08;List&#xff09;列表是可变的有序序列&#xff0c;元素可重复&#xff0c;用方括号 [] 定义。支持增删改查操作。案例fruits ["apple", "banana", "cherry"] fruits.append("orange") # 添加元素 fruits[1] "…...

【教学类-160-14】20260425 AI视频培训-练习014“豆包AI视频《月下枯蔷(哥特风)》+豆包图片风格:油画”

20260425 《014月下枯蔷&#xff08;哥特风&#xff09;》风格&#xff1a;油画背景需求 选了哥特风格故事脚本 豆包故事脚本 只有画面&#xff0c;没有图片关键词、图片转视频动态关键词 内容有点长&#xff0c;我要控制在10秒一个镜头 很好只有10秒一个镜头了。 写一个故事名…...

抖音无水印视频下载终极指南:3分钟掌握免费高清资源获取秘籍

抖音无水印视频下载终极指南&#xff1a;3分钟掌握免费高清资源获取秘籍 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback…...

学Simulink——基于Simulink的电池热管理系统(BTMS)多目标优化​

目录 手把手教你学Simulink——基于Simulink的电池热管理系统&#xff08;BTMS&#xff09;多目标优化​ 摘要​ 一、背景与挑战​ 1.1 为什么电池越快充&#xff0c;温差越容易“失控”&#xff1f;​ 1.2 核心痛点与设计目标​ 二、系统架构与核心控制推导​ 2.1 整体架…...

DLSS Swapper终极指南:三步实现游戏DLSS智能管理,告别手动替换烦恼

DLSS Swapper终极指南&#xff1a;三步实现游戏DLSS智能管理&#xff0c;告别手动替换烦恼 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper 你是否曾经为了提升游戏帧率&#xff0c;在数十个游戏目录中手动寻找并替换DL…...

Driver Store Explorer:Windows系统驱动管理的终极解决方案

Driver Store Explorer&#xff1a;Windows系统驱动管理的终极解决方案 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 你是否曾为Windows系统盘空间不断减少而烦恼&#xff1f;是否发现…...

基于Simulink的电池热管理系统(BTMS)多目标优化​

目录 手把手教你学Simulink——基于Simulink的电池热管理系统(BTMS)多目标优化​ 摘要​ 一、背景与挑战​ 1.1 为什么电池越快充,温差越容易“失控”?​ 1.2 核心痛点与设计目标​ 二、系统架构与核心控制推导​ 2.1 整体架构:从“盲目制冷”到“多目标运筹帷幄”的…...

2026北航计算机学院保研硕士预推免面经

2026年开始北航计算机学院全面取消了夏令营&#xff0c;最终保研的录取资格全由预推免决定。而作为经典的强com院校&#xff0c;北航的预推免延续了前夏令营的节奏&#xff0c;即考核通过才有机会在保研时录取。一、日程9.18 上午报道心理健康测评 下午机试&#xff08;如需要&…...

FAQ 数据库MySQL与SQLite选择与切换

Skeyevss FAQ&#xff1a;数据库 MySQL 与 SQLite 选择与切换 试用安装包下载 | SMS | 在线演示 项目地址&#xff1a;https://github.com/openskeye/go-vss 1. 何时用 SQLite 适合&#xff1a;单机试用、开发本机、小规模验证。优点是无独立数据库进程、部署简单&#xff1…...

工业PHP网关性能瓶颈诊断手册(CPU飙高98%、MQTT丢包率超12%的17个真实故障根因)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;工业PHP网关性能瓶颈诊断手册&#xff08;CPU飙高98%、MQTT丢包率超12%的17个真实故障根因&#xff09; 工业PHP网关常被部署于边缘计算节点&#xff0c;承担协议转换、设备接入与实时数据路由等关键任…...

CaTok:基于因果标记化的图像序列建模新方法

1. 项目概述&#xff1a;重新定义图像序列建模的因果边界在计算机视觉与序列建模的交叉领域&#xff0c;图像标记化&#xff08;Image Tokenization&#xff09;一直是连接像素空间与离散表示的关键桥梁。传统方法如ViT的1616分块策略虽然简单高效&#xff0c;却忽视了图像序列…...

如何用LeagueAkari智能工具集提升英雄联盟游戏效率的完整指南

如何用LeagueAkari智能工具集提升英雄联盟游戏效率的完整指南 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power &#x1f680;. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit LeagueAkari是一款基于英雄联盟官…...

【PHP 8.9类型系统终极指南】:Strict Type Enforcement如何将运行时错误拦截在编译前?

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;PHP 8.9类型系统严格校验的演进与定位 PHP 8.9 并非官方发布的正式版本&#xff08;截至 PHP 官方最新稳定版为 8.3&#xff09;&#xff0c;但作为社区广泛讨论的“假想演进节点”&#xff0c;它承载了…...

量子编译框架QClaw:模块化设计与硬件感知优化实践

1. 项目概述与核心价值最近在量子计算的开源社区里&#xff0c;一个名为QuantumClaw/QClaw的项目引起了我的注意。这个名字本身就很有意思&#xff0c;“Quantum”指向了其核心领域——量子计算&#xff0c;而“Claw”则暗示了某种抓取、操控或接口的能力。简单来说&#xff0c…...

十大Web安全扫描工具

十大Web安全扫描工具 扫描程序可以在帮助造我们造就安全的Web站点上助一臂之力&#xff0c;也就是说在黑客“黑”你之前&#xff0c;先测试一下自己系统中的漏洞。我们在此推荐10大Web漏洞扫描程序&#xff0c;供您参考。 Nikto 这是一个开源的Web服务器扫描程序&#xff0c;它…...

基于炬芯ATS2825音响系统开发

基于炬芯ATS2825音响系统开发...

《每日一命令15:du——深度分析磁盘占用》

本期摘要du 是 Linux 下分析磁盘占用最直接的命令&#xff0c;与 df 互补&#xff1a;df 看分区整体&#xff0c;du 看具体目录/文件。掌握 du -sh&#xff08;汇总目录大小&#xff09;、du -sh *&#xff08;列出子目录&#xff09;、du -h --max-depth1&#xff08;限制深度…...

《100个“反常识”经验15:Nginx 502排查:从应用到内核》

本期摘要502 Bad Gateway 是 Nginx 最让人头疼的错误码之一。它不像 404 那样明确&#xff08;文件不存在&#xff09;&#xff0c;而是表示“上游服务器返回了无效响应”。本文从一次真实故障切入&#xff0c;按“客户端 → Nginx → 应用 → 数据库”的链路分层排查&#xff…...

FastHMR:基于Transformer与扩散模型的高效人体网格恢复

1. 项目背景与核心价值人体网格恢复&#xff08;Human Mesh Recovery&#xff09;是计算机视觉领域的重要研究方向&#xff0c;其目标是从单张RGB图像中重建出具有三维几何信息的人体模型。传统方法通常依赖复杂的优化流程或级联网络&#xff0c;而FastHMR通过融合Transformer架…...