- 博客(208)
- 问答 (1)
- 收藏
- 关注
原创 Kubernetes 节点提前拉取 / 预热镜像所有方案汇总
下面一份的 Kubernetes 节点所有方案汇总,覆盖:手动、原生资源、Operator、节点启动、离线、镜像缓存等全部场景。
2026-03-03 13:49:52
543
原创 Pod 关联的 PVC/PV 存在 挂载残留 / 绑定状态异常
核心原因:Pod删除后,PVC/PV的绑定关系、节点上的卷挂载残留/锁未被清理,新Pod复用旧PVC时无法正常挂载卷,而删除PVC会触发卷的全链路状态重置(解绑PV、清理挂载残留、释放锁),新PVC能建立干净的绑定关系,让Pod正常挂载;关键差异:K8s中Pod删除仅释放容器资源,不清理存储卷状态;PVC删除是存储卷的「状态重置操作」,会清理绑定关系和节点挂载残留;高发场景:强制删Pod、StatefulSet有状态服务、hostPath/本地存储、节点/CSI插件异常;规避方法。
2026-02-06 13:52:25
830
原创 k8s中Jenkins 配置文件「 更新不了 」
该操作是应急修复 K8s 上 Jenkins 侧车容器(config-reload)的异常进程,解决配置无法更新的问题,核心是杀死重复启动的sidecar.py进程(PID 8),保留正常的 PID 1 进程;核心问题根源是sidecar.py脚本异常/僵尸进程泄露/容器资源不足,导致多个sidecar.py进程并存,干扰配置重载功能;临时修复用kill 异常PID,长期优化需「脚本加异常处理+容器加资源/探针+日志监控」,从根源避免问题复现;
2026-01-30 16:14:06
791
原创 ArgoCD 中资源存在不可变字段修改的含义和举例
不可变字段」是指K8s 资源创建完成后,不允许被修改的字段(K8s 设计上禁止更新,强行修改会报错),这类字段通常是资源的「核心配置」,修改后会导致资源的本质属性发生变化,K8s 无法通过「更新」实现,只能删除旧资源后重建。ArgoCD 同步时,若检测到「Git 仓库中的资源配置」与「集群中已存在的资源配置」在不可变字段上有差异,就会提示「资源存在不可变字段修改」,且无法通过直接更新,只能选择「重建资源」(「不可变字段」是 K8s 资源创建后禁止修改的核心字段,修改后只能删除重建,无法直接更新;
2026-01-30 09:33:54
612
原创 argocd 提示信息:The resources will be synced using ‘kubectl replace/create‘ command that.....
该提示是 ArgoCD 的安全预警,触发原因是配置了或资源存在不可变字段修改,同步会重建资源;临时同步手动输入y,脚本/批量同步加--yes,全局关闭需修改argocd-cm且生产环境谨慎;核心原则:同步前确认资源重建的业务影响,优先保留安全预警,避免误操作导致故障。
2026-01-30 09:29:45
781
原创 argocd 命令使用详解
核心流程login(登录)→app create(创建应用)→app sync(同步应用)→app get(排查故障),覆盖日常大部分操作;应急命令(终止卡壳同步)、(强制同步)、(备份),解决高频故障;最佳实践:复杂配置用 YAML 文件创建应用,不可变资源添加注解,避免手动操作引入风险。这份指南足够覆盖日常运维场景,若需某一命令的更细节用法,可执行argocd <命令> --help查看官方详细说明(如。
2026-01-29 10:09:17
562
原创 理解 envFrom.secretRef 应用
核心理解是「批量将 Secret 中的敏感键值对注入为容器环境变量」的简洁方式,避免敏感信息硬编码在 Deployment 中;应用步骤:创建 Secret → Deployment 中配置→ 部署验证 → 应用代码读取环境变量;关键要点:命名空间一致、配置 Reloader 自动重启、遵循最小权限/定期轮换的安全原则。通过这套流程,你可以安全、高效地管理应用的敏感配置,符合 K8s 云原生的最佳实践。
2026-01-21 11:04:44
549
原创 Kubespray离线部署详细方案
在金融、军工、政务等网络隔离环境中,无法直接访问互联网获取部署依赖资源,导致Kubernetes集群部署难度增加。本方案基于Kubespray(Ansible-based部署工具),通过“联网构建机预制资源+内网服务分发+离线执行部署”的思路,实现无网络环境下Kubernetes集群的生产级部署,确保集群组件完整、配置可定制、部署过程可复现。环境类型节点角色核心作用网络要求联网环境构建机下载Kubespray源码、依赖资源(镜像/包/二进制)
2026-01-19 11:19:40
702
原创 ArgoCD App of Apps 模式详解
App of Apps 是 ArgoCD 规模化管理集群的标准模式,其核心是通过一个根 Application 批量管理所有子 Application,实现集群资源的全生命周期 GitOps 化。一键集群初始化:新集群快速部署所有资源;分层管理:职责清晰,便于多团队协作;声明式变更:所有修改通过 Git 提交,可追溯、可回滚;无缝集成自管理:实现 ArgoCD 自身的 GitOps 管理。生产环境中,建议结合 ArgoCD 项目、同步波次、健康检查等特性,构建稳定、高效的 GitOps 流水线。
2026-01-16 16:51:18
684
原创 argocd, app (especially CiliumIdentity) is constantly marked as Out-Of-Sync
全局排除:修改argocd-cm的,是最彻底、推荐的方案;可选补充:排除其他 Cilium 动态资源(如),避免后续同类问题;验证生效:同步 ArgoCD 配置,重启控制器,确认 Out-Of-Sync 状态消失。
2026-01-16 15:56:10
563
原创 k8s 国内无法下载docker images的分析
核心问题:服务器到网易云镜像仓库的网络链路不通,且高版本镜像未同步;终极方案:离线下载镜像→拷贝到服务器→加载镜像→创建集群,完全绕开网络限制;关键版本:优先选 v1.28.0(稳定、镜像源覆盖全),避免 v1.35.0 这类高版本;验证重点:加载镜像后用确认标签正确,创建集群时加跳过校验。如果执行后仍有报错,提供完整的错误输出,我会帮你进一步定位问题。
2026-01-14 10:16:42
661
原创 K8s 的 command/args 会覆盖 Dockerfile 的 CMD/ENTRYPOINT
核心规则:K8s会覆盖 Dockerfile 的,你的脚本替代了镜像原本的启动命令;args 特殊点args是传给command的脚本,执行完就退出,必须启动长期进程;exec 的作用:替换 shell 进程为 Python 进程,让 Python 成为容器主进程;关键结论:不是args有“特殊说明”,而是 K8s 容器必须有一个长期运行的主进程——不加,脚本执行完就退出,容器自然启动失败。
2026-01-13 15:27:32
673
1
原创 k8s中items.key的解析和实例
核心逻辑volumes定义“数据源(Secret)”,items精准筛选Secret的key并自定义文件名,把卷挂载到容器内具体路径;关键注意name要前后一致、secretName必须存在、用八进制420而非644;使用场景:适用于只需要挂载Secret中的部分key,且需要重命名挂载文件的场景(比如应用只认clone.conf,但Secret里的key是conf.china。
2026-01-13 14:58:29
685
原创 Job 对应的 Pod 运行成功后未被删除 小结
核心结论:Completed 状态的 Job/Pod 主要占用节点磁盘(卷数据)和Etcd 元数据,挂载卷的场景下磁盘占用是核心风险;最佳实践为所有 Job 配置自动清理;CronJob 严格限制;挂载 PVC 的 Job 需手动/自动释放存储资源,避免持久化存储浪费。/bin/bashset -e# 删除所有Completed Pod# 删除所有Completed状态的Jobecho "清理完成!
2025-12-18 09:03:48
756
原创 in argocd ‘/tmp/_argocd-repo/../.git/index.lock‘: No space left on
可以补充完整的执行环境(如 Pod 名称固定前缀、节点权限等),我会针对性完善。(仅拥有者有写入+执行权限,无读取权限),且你当前执行命令的用户不是。ArgoCD 支持配置仓库缓存的 TTL(过期时间),修改。临时文件,最终 checkout 失败。(目录属主),导致无法遍历目录统计大小。若仅需清理空间,无需统计大小,可直接用。,导致 Git 拉取代码时无法创建。用户(Pod 内默认属主),或用。的 Deployment,为。用户强制删除目录(Pod 内。Deployment 中,给。
2025-12-17 12:45:08
979
原创 ArgoCD 中无用 ReplicaSet 问题全解析
基础配置:所有 Deployment 统一设置,从根源控制版本数;日常运维:通过 CronJob 每天清理超 24 小时的无用 ReplicaSet;应用生命周期:删除 ArgoCD 应用时启用级联删除,避免残留;风险兜底:清理前先通过--dry-run验证,或保留最近 1 天的 ReplicaSet 不清理。ArgoCD 中无用的 ReplicaSet(无 Pod 运行的旧版本)
2025-12-10 10:37:03
719
原创 Descheduler for Kubernetes
基础配置image:tag: v0.29.0 # 适配 K8s 1.24+,按需选择版本# 调度策略配置(核心)policy:profiles:- name: "RemoveDuplicates" # 驱逐重复 Pod(同一节点多副本)args:- name: "LowNodeUtilization" # 驱逐低资源利用率节点的 Podargs:cpu: 20 # 节点CPU利用率低于20%触发memory: 20cpu: 50 # 目标利用率50%memory: 50。
2025-12-09 13:16:28
676
原创 比较 SeaweedFS 与 Longhorn
SeaweedFS是主打高吞吐的分布式文件/对象存储,Longhorn是K8s原生的分布式块存储,二者适配K8s场景的性能特点、核心优缺点差异显著,以下结合具体数据、适用场景及官方信息展开详细对比:二者的性能优化方向不同,SeaweedFS侧重小文件高吞吐和快速寻址,Longhorn侧重块存储的一致性与稳定性,具体性能数据如下:
2025-11-12 14:08:14
878
原创 在k8s中seaweedfs中,weed 命令详细举例说明
在 Kubernetes 环境中使用weed命令行工具操作 SeaweedFS 时,需先确保weed客户端能连接到集群内的 SeaweedFS 服务(通常是 Filer 或 Master)。以下是,涵盖文件/目录的上传、下载、删除、查看等操作,结合 Kubernetes 环境的网络特性进行说明。
2025-11-12 13:07:44
763
原创 在k8s中部署seaweedfs,上传文件到seaweedfs方法
若已通过 SeaweedFS CSI 驱动创建了 PV/PVC,可将卷挂载到 Pod 中,直接在 Pod 内读写文件(文件会自动存储到 SeaweedFS)。确保 S3 Gateway 已部署(通常作为 Deployment 或 StatefulSet),并通过 Service 暴露端口(默认 8333)。在 K8s Pod 中通过 FUSE 挂载 SeaweedFS 目录,直接像操作本地文件一样上传,适合应用需要直接读写文件系统的场景。等工具上传,适合习惯 S3 操作的场景。(注意:需确保容器有。
2025-11-05 10:12:25
595
原创 新的pvc是否可以指定pv, 而这个pv已经被另一个pvc绑定,状态为bound
结论:新 PVC 无法指定已处于Bound状态的 PV(已绑定其他 PVC),Kubernetes 会主动拒绝该绑定请求。核心逻辑:PV 与 PVC 的绑定是排他性的,避免多业务共享同一卷导致数据安全风险。数据复用方案:需通过“快照 + 克隆”创建新卷,或在Retain策略下释放 PV 后复用(需手动操作)。
2025-10-14 16:44:01
392
原创 用helm安装SeaweedFS时,指定了persistentVolumeClaim
在使用 Helm 安装 SeaweedFS 时指定 persistentVolumeClaim(PVC)配置,核心意义是为 SeaweedFS 的关键组件(如 master、filer、volume 节点)提供持久化存储,确保数据在 Pod 重启、重建或集群故障时不丢失。
2025-10-14 09:17:12
587
原创 Descheduler for Kubernetes(K8s 重调度器)
Descheduler 的行为由ConfigMap配置(默认名称# descheduler-config.yaml(ConfigMap 内容) apiVersion : v1 kind : ConfigMap metadata : name : descheduler - config namespace : kube - system data : policy.yaml : | apiVersion: "descheduler/v1alpha2"
2025-10-10 16:01:39
660
原创 seaweedfs中,通过 Filer 接口写入测试文件,会存储到哪里
从用户视角(通过 Filer 接口访问):文件位于逻辑路径。从系统存储视角:文件数据分散存储在一个或多个 Volume Server 的数据卷中,由 Filer 统一管理映射关系。这也是为什么通过能看到文件(访问 Filer 的逻辑路径),但 Pod 内看不到的核心原因——若 Pod 挂载的逻辑路径与写入路径不匹配,就无法通过 Pod 内的目录访问到文件。
2025-10-09 14:48:42
411
原创 Helm Chart 中,SeaweedFS的 master.data.type 选择
对比维度hostPath数据可靠性低(依赖单节点磁盘)高(依赖集群级存储)部署复杂度简单(无需提前配置)稍复杂(需 PV/StorageClass)动态调度支持不支持(Pod 迁移后数据丢失)支持(PV 可跟随 Pod 调度)高级特性(快照等)不支持支持(依赖后端存储)适用场景开发测试、临时场景生产环境、正式部署建议开发测试用hostPath快速部署;生产环境必须用。
2025-09-30 15:34:30
918
原创 主流工作法简介
这些方法各有侧重,实际应用中常结合使用(例如用SMART设定OKR,用PDCA优化Scrum迭代,用80/20优先级配合GTD执行),需根据具体场景灵活选择。
2025-09-19 16:47:23
475
原创 在S3中,如何指定一个文件不受lifecycle的影响,不要被删除。
在S3中,要确保一个文件不受生命周期(Lifecycle)规则影响(即不被自动删除或转换存储类),核心思路是,或。
2025-09-05 14:19:31
880
原创 Argo CD 中部署的 Helm Chart 中的 Job 不定时自动重启
在 Argo CD 中部署的 Helm Chart 中的 Job 不定时自动重启,通常与以下几种机制或配置有关。Argo CD 默认会定期检查集群状态与期望状态的差异(即 “自动同步”),如果发现 Job 不存在或未完成,可能会触发重新部署。若 Helm Chart 中的其他资源(如 ConfigMap、Secret)发生变化,可能触发整个 Chart 的重新部署。若 Job 被标记为不健康,可能触发重新部署。若 Chart 中意外混入了 CronJob 配置,会导致定时触发。
2025-07-16 08:59:28
708
原创 在 Jenkins Master 上设置一个全局环境变量
所有 Agent(节点)和后续的 Pipeline 都可以访问它。如果有进一步问题(如权限管理、变量覆盖优先级等),可以继续探讨!这段 Groovy 脚本定义了一个函数。中添加或修改一个环境变量(
2025-07-10 14:42:52
847
原创 helm chart的chart.yaml 中,version: 0.0.8, appVersion: “0.0.6“ 区别
在 Helm Chart 的。主版本.次版本.补丁。
2025-07-02 14:04:24
520
原创 S3中 client.get_usage_stats() 和 client.list_buckets() 区别详解
是 Amazon S3 客户端的两个不同方法,用于获取不同类型的信息。:实际上,AWS SDK 中并没有。
2025-06-27 15:52:29
396
原创 K8S: etcdserver: too many requests
通过以上步骤,您可以有效解决etcd请求过载问题,并优化Kubernetes集群的长期稳定性。如果问题持续存在,建议进一步分析具体请求来源,可能需要对特定组件进行代码级优化。错误时,表明etcd数据库接收到的请求量超过了其处理能力。etcd作为Kubernetes的核心组件,存储着集群的所有状态数据,处理请求过载会导致集群不稳定。对etcd集群进行滚动更新时,每次只更新一个节点,确保集群可用性。当Kubernetes集群出现。
2025-06-23 14:13:25
1870
1
原创 Helm 回滚部署操作指南
当新版本部署出现问题(如配置错误、服务异常或功能故障)时,通过回滚可快速恢复到之前稳定的版本,减少故障影响时间。默认情况下,Helm 回滚会使用历史版本的配置。若需保留当前配置(如仅回滚代码而非配置),添加。通过以上步骤,可高效完成 Helm 部署的回滚操作,保障系统在出现问题时快速恢复到稳定状态。命令回滚到指定的历史版本(
2025-06-19 09:18:22
714
原创 Kubernetes证书过期后更新证书的过程中,正在运行的 Pod 是否受有影响
通过合理规划和操作,可以最大程度减少证书更新对 Pod 的影响。
2025-06-17 09:49:30
647
原创 Helm 的 Chart.yaml 文件中,version 和 appVersion 详解
【代码】Helm 的 Chart.yaml 文件中,version 和 appVersion 详解。
2025-06-16 10:08:32
818
空空如也
jinja2的两个变量比较,如何得到想要的输出结果
2021-11-12
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅