首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >公司迁移到K8s后,开发和运维的配合变了

公司迁移到K8s后,开发和运维的配合变了

作者头像
用户11081884
发布2026-07-20 20:38:34
发布2026-07-20 20:38:34
80
举报

“以前发版,运维在群里@:‘兄弟,服务器IP和端口发一下,我上去部署。’现在发版,在群里@运维:‘帮忙看看HPA为啥没触发,Pod起不来?’”

公司完成K8s迁移半年了,技术栈的升级肉眼可见。但感触最深的,不是那些炫酷的自动伸缩和滚动更新,而是开发(Dev)和运维(Ops)之间那堵看不见的墙,正在被一砖一瓦地拆掉。工作方式、责任边界、甚至沟通语言,都发生了微妙而深刻的变化。

变化一:从“交活儿”到“交定义”——交付物的本质变了

迁移前(传统虚拟机/物理机时代):开发:写完代码,打个包(war/jar),附上一份《部署文档》,里面写着:“需要CentOS 7、JDK 8、Tomcat 9,配置文件在/opt/app/config/,启动命令是nohup java -jar ...”。然后,这个“包裹”就扔给了运维。

迁移后(K8s时代):开发:除了代码,还需要提供一份(或多份)YAML文件,称之为“资源定义”。这份定义里,不再有具体的服务器IP,而是声明了期望的状态

代码语言:javascript
复制
# deployment.yaml - 告诉K8s“我想要什么”
apiVersion: apps/v1
kind: Deployment
metadata:
  name: user-service
spec:
  replicas: 3  # 我想要3个实例
  selector:
    matchLabels:
      app: user-service
  template:
    metadata:
      labels:
        app: user-service
    spec:
      containers:
      - name: app
        image: registry.company.com/user-service:v1.2.0 # 用这个镜像
        ports:
        - containerPort: 8080
        resources:
          requests:  # 最少给我这些资源
            cpu: "500m"
            memory: "512Mi"
          limits:    # 最多只能用这些
            cpu: "1000m"
            memory: "1Gi"
        envFrom:
        - configMapRef:
            name: user-service-config # 配置从这个ConfigMap来
        livenessProbe:  # 怎么判断我还活着?
          httpGet:
            path: /health
            port: 8080

核心转变:开发交付的,不再是一个需要被“执行”的指令集,而是一份面向K8s这个“自动化引擎”的标准化说明书。运维的角色,从“手工执行者”转变为“平台保障和说明书审核者”。

变化二:排错现场,从“互相甩锅”到“协同侦探”

迁移前经典场景:线上服务挂了。开发:“我本地是好的!肯定是服务器环境/网络有问题。”运维:“服务器监控都正常,肯定是你的代码有Bug/配置不对。”(然后开始漫长的拉群、截日志、互相传文件……)

迁移后新场景:线上Pod状态是CrashLoopBackOff(崩溃循环)。

  1. 开发第一时间自查:运行kubectl logs <pod-name> --previous,直接看到上一个崩溃容器的应用日志,迅速定位到是数据库连接字符串配置错误。
  2. 运维提供平台视角:运行kubectl describe pod <pod-name>,查看Events,发现是因为ConfigMap挂载失败,并指出是权限问题。
  3. 共同的语言:双方讨论的不再是“你那台服务器”,而是“那个Pod”、“那个Deployment”、“那个ConfigMap”。问题被收敛在统一的资源对象上。

工具统一了战场kubectl logskubectl describekubectl exec 成了开发和运维共享的“侦探工具包”。问题定位从“黑盒猜测”变成了“白盒观测”,责任界定变得清晰,协作效率飙升。

变化三:配置管理,从“运维的秘密”到“团队的代码”

以前,数据库密码、第三方API密钥、环境开关,都藏在运维管理的服务器某个深不见底的配置文件里。开发想要改动,得提工单,走流程,生怕改错了影响全局。

现在,这些配置变成了ConfigMapSecret,同样是YAML定义,和业务代码一起存放在Git仓库中。

代码语言:javascript
复制
# configmap.yaml - 配置即代码
apiVersion: v1
kind: ConfigMap
metadata:
  name: user-service-config
data:
  app.properties: |
    database.url=jdbc:mysql://db-host:3306/userdb
    cache.enabled=true
    log.level=INFO

带来的改变

  • 版本化与可追溯:配置的每一次修改都有Git记录,谁、什么时候、改了什么都一清二楚,轻松回滚。
  • 环境一致性:开发、测试、生产环境使用不同ConfigMap,但结构相同,彻底杜绝了“在我这儿是好的”这类问题。
  • 权限下放与责任共担:开发可以在自己的特性分支修改配置,经过Code Review后,随应用代码一起发布。配置管理从运维的“专属特权”变成了团队的“共同责任”。
变化四:发布与扩容,从“神圣仪式”到“日常操作”

过去,生产环境发布是件大事,需要定在深夜,运维人员严阵以待,执行复杂的脚本,每一步都心惊胆战。

现在,发布一个Deployment的新版本,对于开发来说,可能就是一条命令:

代码语言:javascript
复制
kubectl set image deployment/user-service app=registry.company.com/user-service:v1.3.0

K8s会自动执行滚动更新,逐个替换Pod,保证服务不中断。监控系统(如Prometheus+Grafana)实时展示着流量和错误率,整个过程可视化。

更革命性的是弹性伸缩:以前扩容需要运维提前几天申请虚拟机、初始化环境。现在,当监控到CPU使用率超过阈值时,HorizontalPodAutoscaler (HPA)会自动增加Pod副本数,从触发到新Pod就绪,可能只需要一两分钟。扩容决策从“人工预判”变成了“系统实时响应”

变化五:运维的价值重塑——从“守护神”到“赋能者”

这是最深层次的变化。传统的运维英雄,是那个能在凌晨三点最快解决服务器故障的人。他们的价值体现在“救火”能力上。

在K8s体系下,随着自动化程度的提高,许多传统的、重复性的“救火”工作被平台接管。运维团队的核心价值,开始向新的方向迁移:

  1. 平台建设与治理:设计并维护高可用、高性能的K8s集群本身(正如参考文章《Kubernetes 百级节点集群调优实战》所描述的),制定资源配额、网络策略、安全基线。
  2. 工具链与最佳实践赋能:为开发团队提供完善的CI/CD流水线、自服务的监控告警、日志聚合平台,并编写清晰的使用指南和最佳实践。
  3. 成本优化与容量规划:分析集群资源使用率,推动混部技术落地,为公司节省真金白银的云资源开支。

简单说,运维从业务的“守护神”(直接操作),变成了开发团队的“赋能者”和公司资源的“大管家”。他们搭建好稳固、自动化的舞台,让开发团队能更自由、更高效地表演。

结语:DevOps不是工具,是进化后的工作方式

公司迁移到K8s,表面上是一次技术架构升级,本质上是一次组织协作模式的进化。它强迫打破隔阂,用同一套语言(YAML/资源对象)对话,在同一个平台(K8s)上协作,对同一份资产(代码+配置)负责。但当开发和运维终于能坐在同一个“驾驶舱”里,看着同样的仪表盘,共同为服务的稳定性和迭代速度负责时,你会发现,那堵墙早已不复存在。

你们团队在迁移K8s后,开发和运维的配合发生了哪些有趣的变化?欢迎在留言区分享你的故事。

“无他,惟手熟尔”!有需要的用起来!

如果你觉得这篇文章有用,欢迎点赞、转发、收藏、留言、推荐❤!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-06-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Nicholas与Pypi 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 变化一:从“交活儿”到“交定义”——交付物的本质变了
  • 变化二:排错现场,从“互相甩锅”到“协同侦探”
  • 变化三:配置管理,从“运维的秘密”到“团队的代码”
  • 变化四:发布与扩容,从“神圣仪式”到“日常操作”
  • 变化五:运维的价值重塑——从“守护神”到“赋能者”
  • 结语:DevOps不是工具,是进化后的工作方式
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档