新闻详情

新闻详情

首页 / 资讯中心 / 详情

devops-exercises 实战:使用 ArgoCD 处理集群内应用状态漂移并完成手动 Sync

发布时间:2026/9/30 6:53:11来源:尧图网络
devops-exercises 实战:使用 ArgoCD 处理集群内应用状态漂移并完成手动 Sync
文档教程DevOps运维【免费下载链接】devops-exercisesLinux, Jenkins, AWS, SRE, Prometheus, Docker, Python, Ansible, Git, Kubernetes, Terraform, OpenStack, SQL, NoSQL, Azure, GCP, DNS, Elastic, Network, Virtualization. DevOps Interview Questions项目地址https://gitcode.com/GitHub_Trending/de/devops-exercises点击查看免费下载导读本文基于 devops-exercises 仓库中 sync_app_cluster 练习完整讲解 ArgoCD 的集群侧状态漂移drift检测与手动同步工作流当集群内的应用被kubectl等命令直接改动后ArgoCD 如何发现实际状态与 Git 期望状态不一致、将其标记为 out-of-sync并最终通过 UI 或 CLI 恢复到期望状态。读完本文你将掌握argocd app get、argocd app sync、argocd app wait等核心命令的实战用法理解 GitOps 中单一事实来源Single Source of Truth为何能约束人工变更。练习背景为什么要从集群侧破坏同步在 GitOps 模式下ArgoCD 会周期性地默认每 3 分钟一次对比 Git 仓库中的期望状态与 Kubernetes 集群中的实际状态并据此给出应用的同步状态状态一致 → 应用标记为Synced已同步状态不一致 → 应用标记为OutOfSync偏离同步随后是否纠正取决于同步策略自动或手动。仓库的 ArgoCD 问答部分 专门描述了这个过程Gathers list of all the apps to sync获取每个仓库的 Git 状态再对 Git 状态与集群状态做比较。本练习Sync App - Cluster与同目录的 Sync App - Git 正好互为镜像Git 侧练习改动仓库里的 Kubernetes 清单观察 ArgoCD 检测到期望状态更新集群侧练习本文不改 Git直接用kubectl改动集群里的资源制造实际状态偏离期望状态。两种场景最终都指向同一个动作——把集群拉回 Git 定义的期望状态这正是 GitOps 的核心价值无论偏差来自哪里代码更新还是人工误操作最终都以 Git 为准。前置要求开始练习前需要满足以下两个条件原文要求运行中的 Kubernetes 集群且已安装 ArgoCDArgoCD 以 Kubernetes 原生方式运行在集群中作为控制器监控状态差异。一个已被 ArgoCD 跟踪tracked的应用即已创建过 ArgoCD Application 资源Git 仓库中的清单已成功同步到集群。如果还没有应用可先完成仓库中的 App Creation 练习创建app-demo并同步或 Sync App - Git 练习用 CLI/UI 创建指向 Kubernetes 清单仓库的 Application。关于 Application它是 ArgoCD 的核心自定义资源CRD负责把应用资源部署并同步到 Kubernetes 集群。一个 Application 通过source字段repoURL、targetRevision、path声明从哪个 Git 仓库读取期望状态通过destination字段server、namespace声明同步到哪个集群和命名空间——相关字段说明可参考 ArgoCD 问答 中的 Practical ArgoCD 101 小节。练习目标原文定义了四个递进式目标验证应用已被 ArgoCD 跟踪且当前处于 in-sync 状态通过一条kubectl命令对应用做出任意改动改动内容可以很极端回到 ArgoCD 检查应用状态确认其已变为 out-of-sync手动执行 Sync把集群状态恢复为 Git 期望状态。制造漂移用 kubectl 改动集群状态原练习建议的改动方式任选其一越极端越能直观体会漂移检测修改镜像 tagkubectl set image deployment/DEPLOYMENT_NAME CONTAINER_NAMEnew-image:tag修改副本数kubectl scale --replicas0 DEPLOYMENT_NAME官方解法采用的就是这条直接删除资源kubectl delete deployment DEPLOYMENT_NAME。只要改动后实际状态不再等于 Git 中清单声明的状态ArgoCD 在下一个同步周期默认 3 分钟可用timeout.reconciliation配置调整就会把应用标记为 OutOfSync。需要注意这里演示的是手动同步策略下 ArgoCD 的表现——它只负责识别差异而不主动纠正关于手动 vs 自动同步的机制见 ArgoCD Syncs 问答。解法 A通过 ArgoCD UI 观察并同步第一步确认初始健康状态在 ArgoCD UI 中点击应用确认其处于Synced与Healthy状态。Healthy 表示应用的健康评估通过对 Deployment/ReplicaSet 等而言即期望状态与实际状态一致包括副本数。第二步在集群中制造变更在终端执行kubectl scale --replicas0 DEPLOYMENT_NAME kubectl get rs DEPLOYMENT_NAME第一条命令把副本数缩为 0制造与清单如声明 replicas: 3的差异第二条命令查看 ReplicaSet 当前状态作为改动生效的佐证。第三步回到 UI 检查状态刷新应用页面若显示仍为 Synced点击Refresh强制重新对比应用应变为OutOfSync状态如需进一步确认差异细节可参考 Git 侧练习的App diff功能查看具体变更内容。第四步执行同步点击Sync按钮再点击SynchronizeArgoCD 会把集群实际状态拉回 Git 期望状态即恢复replicas: 3。解法 B通过 ArgoCD CLI 观察并同步官方解法给出了一条完整的 CLI 命令链可直接在终端按序执行# 1. 检查应用状态确认当前 in-sync argocd app get app-demo # 2. 用 kubectl 改动集群状态或任何其他会改变应用状态的命令 kubectl scale --replicas0 DEPLOYMENT_NAME kubectl get rs DEPLOYMENT_NAME # 3. 再次检查应用状态此时应为 out-of-sync argocd app get app-demo # 4. 同步应用状态并等待同步完成 argocd app sync app-demo argocd app wait app-demo命令逐个拆解argocd app get app-demo输出应用详情包括同步状态Synced/OutOfSync、健康状态Healthy/Degraded/Progressing 等、目标集群与命名空间。执行两次即可直观看到状态从 Synced 变为 OutOfSyncargocd app sync app-demo手动触发一次同步把 Git 期望状态应用到集群argocd app wait app-demo阻塞等待应用达到同步与健康状态适合在脚本中做串行化控制同步后立即等待结果成功才继续后续步骤。若使用 Git 侧 sync_app_git 练习 创建的应用应用名同样是app-demo可无缝套用以上命令。原理纵深ArgoCD 为什么能纠正人工改动练习背后隐藏着一个关键机制ArgoCD 检测到状态偏离后会从 GitOps 仓库同步覆盖掉人工改动。这在仓库 ArgoCD 问答 中有明确描述一旦某工程师手工修改了集群、覆盖了仓库中的部分配置ArgoCD 会检测到状态分歧并从 GitOps 仓库同步覆盖掉人工修改。这带来两个延伸结论单一事实来源Git 仓库是唯一允许改动集群的入口。即使有人手动kubectl覆盖也只会被 ArgoCD 拉回无法长期生效可配置的纠偏行为如果你希望 ArgoCD 不自动覆盖人工变更而是改为告警等动作可以通过配置实现对应问答中 Nate 的问题场景。这也是自愈Self-Heal概念的边界——自动纠正集群状态使其匹配期望状态。健康状态与同步状态速查本练习涉及的核心状态术语与仓库 ArgoCD Application Health 问答 相互印证状态含义SyncedGit 期望状态与集群实际状态一致OutOfSync两者不一致等待同步动作Healthy资源健康对 Deployment 等即期望与实际副本数一致Progressing资源尚未健康但正在向健康收敛Degraded资源不健康Missing / Suspended / Unknown资源缺失 / 暂停 / 状态未知同步策略方面见 ArgoCD Syncs 问答手动同步ArgoCD 只标记差异、不自动纠正——这正是本练习采用的方式自动同步检测到差异即自动应用 Git 期望状态自动清理Auto-Prune开启后仓库中删除的文件/内容对应资源也会被移除自愈Self-Heal人工改动集群后自动纠正为期望状态。小结与延伸阅读通过本练习你完整走通了 GitOps 的人工漂移 → 检测 → 恢复闭环用kubectl scale制造 out-of-sync再用argocd app get/argocd app sync/argocd app wait或 UI 的 Refresh Sync把集群拉回 Git 期望状态。这套操作是日常排障、审计谁改坏了集群的基础功。想继续深入 ArgoCD仓库还提供了相邻练习与问答资源Sync App - Git 练习从仓库变更视角体验同一同步机制App Creation 练习创建被 ArgoCD 跟踪的应用含 CLI 与 UI 两种方式ArgoCD Helm 练习用 ArgoCD 跟踪 Helm ChartArgoCD 完整问答集覆盖同步周期配置timeout.reconciliation、手动/自动同步、自愈、App of Apps 等进阶主题Argo Rollouts 练习 与 Blue/Green 练习基于 Rollout 的渐进式发布与自动回滚。赞分享文档教程DevOps运维【免费下载链接】devops-exercisesLinux, Jenkins, AWS, SRE, Prometheus, Docker, Python, Ansible, Git, Kubernetes, Terraform, OpenStack, SQL, NoSQL, Azure, GCP, DNS, Elastic, Network, Virtualization. DevOps Interview Questions项目地址https://gitcode.com/GitHub_Trending/de/devops-exercises点击查看免费下载相关推荐devops-exercises 实战使用 ArgoCD 检测并同步 Kubernetes 集群状态漂移Sync App - Clusterdevops exercises 实战使用 ArgoCD 检测并同步 Kubernetes 集群状态漂移Sync App Cluster 导读 本指南围绕文档教程DevOps运维devops-exercises 实战指南用 ArgoCD 从 Git 仓库同步 Kubernetes 应用Sync App - Gitdevops exercises 实战指南用 ArgoCD 从 Git 仓库同步 Kubernetes 应用Sync App Git 导读 本指南基于 d文档教程DevOps运维tsParticles 仓库中的 Nx Generator 使用指南从脚手架生成到验证的完整工作流tsParticles 仓库中的 Nx Generator 使用指南从脚手架生成到验证的完整工作流 本篇技术指南以 .agents/skills/nx gen文档教程DevOps运维上一篇JellyBook安全性分析用户数据保护和隐私策略详解下一篇百度网盘Mac版终极加速方案三步解锁SVIP高速下载体验创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Android模拟器IMEI和IMSI修改示例:TaoToken统一Key接入配置与验证 2026/9/30 20:26:28

Android模拟器IMEI和IMSI修改示例:TaoToken统一Key接入配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
大模型显存压缩的 7 个手段清单,每个都标了省多少与代价 2026/9/30 20:26:06

大模型显存压缩的 7 个手段清单,每个都标了省多少与代价

显存不够时最难受的不是"买不起卡",而是不知道先动哪一刀:量化、收并发、换模型、卸载,网上清单列了一堆名词,却没人把"省多少"和"代价是什么"写在一起。这篇把 7 个手段逐个摊开——大模型显存的每…

阅读更多 →
AI Agent时代,CLI复古风潮下TaoToken如何统一Codex CLI与Claude Code的Key管理 2026/9/30 20:25:35

AI Agent时代,CLI复古风潮下TaoToken如何统一Codex CLI与Claude Code的Key管理

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
用 SendMessage 发送鼠标左键按下消息:WM_LBUTTONDOWN 的 LPARAM 坐标封装与 TaoToken 配置骨架 2026/9/30 20:24:50

用 SendMessage 发送鼠标左键按下消息:WM_LBUTTONDOWN 的 LPARAM 坐标封装与 TaoToken 配置骨架

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
基于 Vue 开发的背单词网站:用 TaoToken 统一 Key 打通 AI 例句生成与配置骨架 2026/9/30 20:24:03

基于 Vue 开发的背单词网站:用 TaoToken 统一 Key 打通 AI 例句生成与配置骨架

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
先别刷手机了,试试用0️⃣元0️⃣行代码在微信小程序里手搓你的天马行空——TaoToken 统一 Key 通道实战 2026/9/30 20:23:55

先别刷手机了,试试用0️⃣元0️⃣行代码在微信小程序里手搓你的天马行空——TaoToken 统一 Key 通道实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉