<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Devops on IT技术交流</title><link>http://shimamura.vip/tags/devops/</link><description>Recent content in Devops on IT技术交流</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Mon, 27 Jul 2026 15:28:53 +0800</lastBuildDate><atom:link href="http://shimamura.vip/tags/devops/index.xml" rel="self" type="application/rss+xml"/><item><title>Kubernetes回滚导致Git代码与线上版本不一致问题分析</title><link>http://shimamura.vip/posts/kubernetes_version_drift/</link><pubDate>Mon, 27 Jul 2026 15:28:53 +0800</pubDate><guid>http://shimamura.vip/posts/kubernetes_version_drift/</guid><description>&lt;p&gt;在基于 Kubernetes 的 CI/CD 流程中，版本管理是非常重要的一环。&lt;/p&gt;
&lt;p&gt;在实际搭建 HybridBlog 混合云 DevOps 平台过程中，我遇到了一个典型问题：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Git仓库中的文章已经删除，但是通过 Kubernetes 版本回滚后，线上网站中的文章又重新出现。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;这个问题表面看起来像是 Kubernetes 回滚异常，实际上属于 &lt;strong&gt;源码版本与运行环境版本不一致问题&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;本文记录问题产生原因、排查过程以及解决方案。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="一项目cicd流程"&gt;一、项目CI/CD流程&lt;/h2&gt;
&lt;p&gt;当前博客系统采用以下发布流程：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Gitea
 |
 | git push
 ↓
 Jenkins
 |
 | docker build
 ↓
 Harbor
 |
 | image push
 ↓
 Kubernetes Deployment
 |
 ↓
 Hugo静态博客
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;具体过程：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;开发者修改 Hugo Markdown 文件&lt;/li&gt;
&lt;li&gt;提交代码到 Gitea&lt;/li&gt;
&lt;li&gt;Gitea Webhook 触发 Jenkins&lt;/li&gt;
&lt;li&gt;Jenkins 拉取代码并构建 Docker 镜像&lt;/li&gt;
&lt;li&gt;镜像上传到 Harbor&lt;/li&gt;
&lt;li&gt;Jenkins 使用 kubectl 更新 Kubernetes Deployment&lt;/li&gt;
&lt;li&gt;Pod 使用新镜像提供网站服务&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;正常情况下：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Git代码

Docker镜像

Kubernetes运行版本
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;三者保持一致。&lt;/p&gt;</description></item><item><title>HybridBlog项目 CI/CD 流程简介</title><link>http://shimamura.vip/posts/hybridblog_cicd_workflow/</link><pubDate>Sat, 25 Jul 2026 00:11:00 +0800</pubDate><guid>http://shimamura.vip/posts/hybridblog_cicd_workflow/</guid><description>&lt;p&gt;整体架构：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;开发人员
 |
 | 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网站服务
&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;</description></item><item><title>Harbor 企业级私有镜像仓库部署</title><link>http://shimamura.vip/posts/4_harbor_registry_deployment/</link><pubDate>Fri, 24 Jul 2026 10:40:00 +0800</pubDate><guid>http://shimamura.vip/posts/4_harbor_registry_deployment/</guid><description>&lt;h1 id="第四阶段harbor-企业级私有镜像仓库部署"&gt;第四阶段：Harbor 企业级私有镜像仓库部署&lt;/h1&gt;
&lt;h2 id="41-阶段目标"&gt;4.1 阶段目标&lt;/h2&gt;
&lt;p&gt;本阶段主要完成企业级私有镜像仓库 Harbor 的部署，为后续：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Gitea
 ↓
Jenkins
 ↓
Docker Build
 ↓
Harbor Push
 ↓
Kubernetes Pull
 ↓
Pod运行
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;完整 CI/CD 流程提供镜像存储能力。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="42-部署环境规划"&gt;4.2 部署环境规划&lt;/h2&gt;
&lt;p&gt;本阶段主要操作：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;主机&lt;/th&gt;
 &lt;th&gt;IP&lt;/th&gt;
 &lt;th&gt;作用&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;harbor&lt;/td&gt;
 &lt;td&gt;192.168.10.20&lt;/td&gt;
 &lt;td&gt;Harbor 私有镜像仓库&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Harbor 主机职责：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;存储 Docker 镜像
提供 Kubernetes 镜像拉取服务
提供 Jenkins 镜像推送服务
&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;
&lt;h2 id="43-harbor服务器环境准备"&gt;4.3 Harbor服务器环境准备&lt;/h2&gt;
&lt;h3 id="431-检查-docker-环境"&gt;4.3.1 检查 Docker 环境&lt;/h3&gt;
&lt;p&gt;在 Harbor 主机执行：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;docker version
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;确认 Docker 已安装。&lt;/p&gt;
&lt;p&gt;查看 Docker 运行信息：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;docker info
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;重点确认：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Docker Root Dir: /data/docker
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;保持与前期 Docker 数据目录规划一致。&lt;/p&gt;</description></item><item><title>Jenkins CI 持续集成平台部署</title><link>http://shimamura.vip/posts/5_jenkins_ci_deployment/</link><pubDate>Fri, 24 Jul 2026 10:40:00 +0800</pubDate><guid>http://shimamura.vip/posts/5_jenkins_ci_deployment/</guid><description>&lt;h1 id="第五阶段jenkins-ci-持续集成平台部署"&gt;第五阶段：Jenkins CI 持续集成平台部署&lt;/h1&gt;
&lt;h2 id="51-阶段目标"&gt;5.1 阶段目标&lt;/h2&gt;
&lt;p&gt;本阶段主要完成 Jenkins 持续集成平台部署，为后续：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Gitea代码仓库
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Jenkins Pipeline
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Docker构建镜像
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Harbor私有仓库
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Kubernetes部署
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;建立 CI 环境。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="52-部署环境规划"&gt;5.2 部署环境规划&lt;/h2&gt;
&lt;p&gt;本阶段主要操作：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;主机&lt;/th&gt;
 &lt;th&gt;IP&lt;/th&gt;
 &lt;th&gt;是否操作&lt;/th&gt;
 &lt;th&gt;作用&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;devops&lt;/td&gt;
 &lt;td&gt;192.168.10.10&lt;/td&gt;
 &lt;td&gt;✅&lt;/td&gt;
 &lt;td&gt;Jenkins CI平台&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;harbor&lt;/td&gt;
 &lt;td&gt;192.168.10.20&lt;/td&gt;
 &lt;td&gt;验证&lt;/td&gt;
 &lt;td&gt;镜像仓库&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;ansible&lt;/td&gt;
 &lt;td&gt;192.168.10.30&lt;/td&gt;
 &lt;td&gt;❌&lt;/td&gt;
 &lt;td&gt;后续自动化部署&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;k8s-node1&lt;/td&gt;
 &lt;td&gt;192.168.10.40&lt;/td&gt;
 &lt;td&gt;❌&lt;/td&gt;
 &lt;td&gt;Kubernetes节点&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;k8s-node2&lt;/td&gt;
 &lt;td&gt;192.168.10.50&lt;/td&gt;
 &lt;td&gt;❌&lt;/td&gt;
 &lt;td&gt;Kubernetes节点&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;ecs-prod&lt;/td&gt;
 &lt;td&gt;云服务器&lt;/td&gt;
 &lt;td&gt;❌&lt;/td&gt;
 &lt;td&gt;后续公网发布&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="53-jenkins部署流程"&gt;5.3 Jenkins部署流程&lt;/h2&gt;
&lt;p&gt;本阶段实施步骤：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;编号&lt;/th&gt;
 &lt;th&gt;内容&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;5.1&lt;/td&gt;
 &lt;td&gt;检查 Docker 环境&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;5.2&lt;/td&gt;
 &lt;td&gt;创建 Jenkins 数据目录&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;5.3&lt;/td&gt;
 &lt;td&gt;Docker部署 Jenkins&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;5.4&lt;/td&gt;
 &lt;td&gt;初始化 Jenkins&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;5.5&lt;/td&gt;
 &lt;td&gt;安装 Jenkins 插件&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;5.6&lt;/td&gt;
 &lt;td&gt;配置 Jenkins 环境&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;5.7&lt;/td&gt;
 &lt;td&gt;创建 Pipeline 测试&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;5.8&lt;/td&gt;
 &lt;td&gt;阶段验收&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="54-devops环境检查"&gt;5.4 devops环境检查&lt;/h2&gt;
&lt;p&gt;操作主机：&lt;/p&gt;</description></item></channel></rss>