一个基于 Kubernetes + Jenkins + Harbor 构建的混合云 DevOps 技术博客。 记录 Linux、Docker、Kubernetes、CI/CD、云计算等技术实践。
DQL - 数据库查询操作
示例表格 s sno sname sex age createtime address did S01 陈宇乐 男 21 2022-02-02 00:00:00 浙江义乌 1 S02 陈紫樱 女 20 2022-02-10 00:00:00 1 S03 杜陈宇 男 21 NULL NULL 1 S04 陈宇乐 男 23 NULL NULL 2 S05 陈樱 女 21 NULL NULL 2 S06 杜佳佳 男 19 NULL NULL NULL d did dname 1 计算机系 2 土木工程系 3 英语系 一、 查询基础 1.1 select 操作 #查询所有学生信息 SELECT * FROM student #查询学生表中的学号与姓名 SELECT sno,sname FROM student #查询学生表中的学号与姓名,并且给一个字段别名 SELECT sno AS studentNO,sname AS '姓名' FROM student #查询学生表中的姓名信息,并过滤掉相同姓名信息 SELECT DISTINCT sname FROM student #查询学生个数,年龄总和,平均年龄,最大年龄,最小年龄,并给他们一个别名 SELECT COUNT(*) AS '学生个数' ,SUM(age) AS sumage FROM student 1.2 where 参考SQL ...
AI 日志分析模块实现记录
项目中增加了 AI 运维辅助模块,通过 Python 调用 Kubernetes API 获取应用 Pod 日志,并结合阿里云百炼大模型进行日志分析,实现异常原因定位和处理建议生成,降低人工排障成本。(本项目中采用阿里云百炼) 一、部署OpenAI SDK 保持如下结构: Gitea │ ▼ Jenkins │ ▼ Kubernetes / \ k8s-node1 k8s-node2 \ / \ / API Server ▲ │ kubectl logs │ AI Log Assistant (devops 主机) │ ▼ 阿里云百炼 1.1 安装依赖 百炼现在推荐兼容 OpenAI SDK 的方式调用,这样以后切换模型也方便。 安装: pip3 install -U openai 如果没有 python3或者pip3可以参考上一篇文章《在CentOS 7.9.2009上安装部署 Python3.9》。 检查: python3 -c "import openai;print(openai.__version__)" 1.2 配置 API Key 不要把 Token 写死到代码里。 创建: ...
在CentOS 7.9.2009上安装部署 Python3.9
CentOS 上自带的 Python 版本是2.7.5,过于老旧,而现在许多项目诸如 AIOps 需要新的Python3环境,所以我们需要手动部署 Python3.9 来避免各种版本不匹配的问题,现以下是手动安装部署Python3.9 的操作记录。 一、安装依赖 yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make libffi-devel 二、下载python3.9安装包 yum install wget -y wget https://www.python.org/ftp/python/3.9.0/Python-3.9.0.tgz 三、解压并安装 # 解压压缩包 tar -zxvf Python-3.9.0.tgz # 进入文件夹 cd Python-3.9.0 # 配置安装位置 ./configure prefix=/usr/local/python3 # 安装 make && make install 四、添加软连接 ln -s /usr/local/python3/bin/python3.9 /usr/bin/python3 ln -s /usr/local/python3/bin/pip3.9 /usr/bin/pip3 #检查是否添加成功 python3 --version pip3 --version
Hugo发布文章脚本编写
在本项目中,因为Hugo以Docker的方式进行部署,所以想要发布文章在操作流程上可能有些繁琐复杂而不人性化,因此我们可以编写Shell脚本来将这个流程简化 一、 原本发布 Hugo 文章的完整流程 当前目录结构类似: /root/HybridBlog ├── Dockerfile ├── Jenkinsfile └── blog ├── content │ └── posts │ ├── devops-platform.md │ └── xxx.md ├── themes │ └── PaperMod ├── hugo.toml └── public 所以以后发布文章需要修改 Git 仓库里的 blog/content/posts。 1.1 创建新文章 进入项目目录: cd /root/HybridBlog 进入 blog: cd blog 使用 Harbor 里的 Hugo 镜像生成文章: docker run --rm \ -v $(pwd):/src \ -w /src \ 192.168.10.20/hybridblog/hugo:exts \ hugo new content posts/4_Harbor_registry_deployment.md 成功: Content "/src/content/posts/4_Harbor_registry_deployment.md" created 1.2 编辑文章 例如: ...
Kubernetes回滚导致Git代码与线上版本不一致问题分析
在基于 Kubernetes 的 CI/CD 流程中,版本管理是非常重要的一环。 在实际搭建 HybridBlog 混合云 DevOps 平台过程中,我遇到了一个典型问题: Git仓库中的文章已经删除,但是通过 Kubernetes 版本回滚后,线上网站中的文章又重新出现。 这个问题表面看起来像是 Kubernetes 回滚异常,实际上属于 源码版本与运行环境版本不一致问题。 本文记录问题产生原因、排查过程以及解决方案。 一、项目CI/CD流程 当前博客系统采用以下发布流程: Gitea | | git push ↓ Jenkins | | docker build ↓ Harbor | | image push ↓ Kubernetes Deployment | ↓ Hugo静态博客 具体过程: 开发者修改 Hugo Markdown 文件 提交代码到 Gitea Gitea Webhook 触发 Jenkins Jenkins 拉取代码并构建 Docker 镜像 镜像上传到 Harbor Jenkins 使用 kubectl 更新 Kubernetes Deployment Pod 使用新镜像提供网站服务 正常情况下: Git代码 Docker镜像 Kubernetes运行版本 三者保持一致。 ...
Prometheus + Grafana 监控平台部署
由于在该环境中Kubernetes的版本是 1.20.2,我们不使用最新版 kube-prometheus-stack,而采用兼容 1.20 的 Prometheus Operator + Grafana 部署方案,避免兼容性问题。对于 Kubernetes 1.20,官方兼容矩阵建议使用较早的 kube-prometheus release(如 release-0.8)。 15.1 准备环境 15.1.1 确认节点全部正常 在 ECS 上执行: kubectl get nodes 应该类似: NAME STATUS ROLES ecs-prod Ready control-plane k8s-node1 Ready k8s-node2 Ready 如果不是全部 Ready,就先不要继续。 kubectl get pods -A 确保: CoreDNS Calico Ingress 全部 Running。 15.1.2 确认资源充足 执行: kubectl top nodes 如果没有安装 metrics-server,不要紧,会提示: Metrics API not available 后续我们也可以补装。 15.1.3 创建监控命名空间 kubectl create namespace monitoring 查看: kubectl get ns 应该出现: monitoring 15.2 拉取node-exporter:v1.3.1镜像并推送Harbor 15.2.1 devops机器拉取镜像 你的 devops: ...
HybridBlog项目 CI/CD 流程简介
整体架构: 开发人员 | | git push ↓ Gitea代码仓库 192.168.10.10:3000 | | Webhook通知 ↓ Jenkins 192.168.10.10:8080 | | Pipeline as Code ↓ Docker Build | ↓ Harbor私有镜像仓库 192.168.10.20 | | kubectl set image ↓ Kubernetes集群 | | ---------------- | | k8s-node1 k8s-node2 192.168.10.40 192.168.10.50 | ↓ HybridBlog网站服务
Harbor 企业级私有镜像仓库部署
第四阶段:Harbor 企业级私有镜像仓库部署 4.1 阶段目标 本阶段主要完成企业级私有镜像仓库 Harbor 的部署,为后续: Gitea ↓ Jenkins ↓ Docker Build ↓ Harbor Push ↓ Kubernetes Pull ↓ Pod运行 完整 CI/CD 流程提供镜像存储能力。 4.2 部署环境规划 本阶段主要操作: 主机 IP 作用 harbor 192.168.10.20 Harbor 私有镜像仓库 Harbor 主机职责: 存储 Docker 镜像 提供 Kubernetes 镜像拉取服务 提供 Jenkins 镜像推送服务 4.3 Harbor服务器环境准备 4.3.1 检查 Docker 环境 在 Harbor 主机执行: docker version 确认 Docker 已安装。 查看 Docker 运行信息: docker info 重点确认: Docker Root Dir: /data/docker 保持与前期 Docker 数据目录规划一致。 ...
Jenkins CI 持续集成平台部署
第五阶段:Jenkins CI 持续集成平台部署 5.1 阶段目标 本阶段主要完成 Jenkins 持续集成平台部署,为后续: Gitea代码仓库 ↓ Jenkins Pipeline ↓ Docker构建镜像 ↓ Harbor私有仓库 ↓ Kubernetes部署 建立 CI 环境。 5.2 部署环境规划 本阶段主要操作: 主机 IP 是否操作 作用 devops 192.168.10.10 ✅ Jenkins CI平台 harbor 192.168.10.20 验证 镜像仓库 ansible 192.168.10.30 ❌ 后续自动化部署 k8s-node1 192.168.10.40 ❌ Kubernetes节点 k8s-node2 192.168.10.50 ❌ Kubernetes节点 ecs-prod 云服务器 ❌ 后续公网发布 5.3 Jenkins部署流程 本阶段实施步骤: 编号 内容 5.1 检查 Docker 环境 5.2 创建 Jenkins 数据目录 5.3 Docker部署 Jenkins 5.4 初始化 Jenkins 5.5 安装 Jenkins 插件 5.6 配置 Jenkins 环境 5.7 创建 Pipeline 测试 5.8 阶段验收 5.4 devops环境检查 操作主机: ...
HybridBlog DevOps平台部署记录
HybridBlog 这是一个基于混合云架构搭建的 DevOps 博客平台。 技术栈: Linux Docker Jenkins Harbor Kubernetes Ingress-Nginx Hugo