运维总监怒怼开发:你真的需要 K8s 吗?

戳下方名片,关注并星标

回复“1024”获取2TB学习资源!

👉体系化学习:运维工程师打怪升级进阶之路 4.0

—   特色专栏  —

MySQL / PostgreSQL / MongoDB

ElasticSearch / Hadoop / Redis

Kubernetes / Docker / DevOps

Kafka / RabbitMQ / Zookeeper 

监控平台 / 应用与服务 / 集群管理

Nginx / Git / Tools OpenStack

大家好,我是民工哥!

2014 年 6 月 DockerCon 大会上 Docker 正式发布了 Docker 1.0 版本,标志着 Docker 的稳定性和可靠性已满足生产环境的运行需求。

4b7792ea8b8686563aeafd17470004ac.jpeg

Docker 的出现解决了应用程序部署和管理的复杂性,使得开发人员能够将应用程序及其依赖项打包到可移植的容器中,并在任何环境中运行。

Kubernetes 则进一步扩展了 Docker 的功能,Kubernetes 的最初设计灵感来自于谷歌内部的 Borg 系统,这是一个用于管理谷歌大规模分布式应用的容器编排系统。

15dc1200b2b5287022e0f3090d103afc.jpeg

通过容器编排技术,能够自动化部署、扩展和管理容器化应用程序,极大地提高了云原生应用的运维效率和可靠性。从 Docker 到 Kubernetes 的发展,体现了容器化技术在云计算领域的不断演进和成熟。

前不久,在某乎上看到一个问题:

df7cc50083dc778f236de9e127dd62ba.png

感觉比较应景,国内的一些企业跟风新技术真的是毫不示弱,但当真我们的企业真的需要 K8s 吗?

我摘取了一些知乎大牛的回答,分享给大家,请大家不吝赐教,也欢迎大家积极参与讨论,在留言区留下你的脚印

来自知乎好友“林英”的回答:

说句难听点的,很多项目,springcloud+k8s 整了10几个后端,一堆服务器;

日活都没上万,日增数据就万条,那点量,整几个springboot 弄弄就行,服务器费用,开发费用一砍,拿来做市场多好,别和我谈解耦,你就这点并发,写个 for 循环,里面可劲写 select 语句都不会蹦。

来自知乎好友“泰酷啦”的回答:

我最近几年待过的公司,我只要一进公司,基本上都是主导或力推全面容器化、K8s 化,不论业务体量(当然,微服务是必须的)。

对于连续用了4年 K8s 的我来说,哪怕你只有三台服务器,我也要给你部署 K8s。

如果你只有一台物理机,我恨不得给你虚拟化三台机器出来再装个 K8s(只是恨不得而已)。

如果你说没必要,我下意识的感觉就是你肯定还不熟悉K8s。

a44396ebda7a92d09f1970912597f3c1.jpeg

下面简单说一下我已经离不开 K8s 的理由。

从线上费用来讲,各种云已经有托管 master 的集群在售,你直接买 node 就行,一个 node 和 一个 ecs 的费用相差也不大(同等配置)。

从线下费用来讲,不管你用不用 k8s,服务器是必须的吧,这个无论如何免不了。

从服务器维护来讲,相对传统的公司服务器一般会用 esxi 等虚拟化技术将物理机分配成若干个虚拟机,而你用了 k8s 之后,你直接可以将物理机作为集群的一个 node,免去虚拟化的时间和维护成本,新购机器直接作为 node 加入资源池。

从维护难度来讲,你只要能熟练使用 kubectl,你的大部分运维工作都可以免去 ssh 这个操作了。

我要运行一个应用:

kubectl create deploy xx --image=xxx

我要让服务可以外部访问:

kubectl expose deploy xx --type xx --target-port xx --port xx

我的应用要扩展一下副本,做下负载均衡:

kubectl scale deploy xx --replicas xx

我要配下域名、转发、黑白名单:

kubectl edit ing ...
对于CI/CD、服务发布更新:
kubectl set image xxx app image=xxx 或 helm upgrade ...

回想一下多年以前你写了一个 300 行的 Shell 只为所谓的平滑更新一个应用的版本,K8s 依然只要你 kubectl 一下。

再进阶一点,你如果稍具开发技能,对接一下 K8s 的 api,把上面的这些操作做到 UI 让开发点点点,你会发现,如果你公司本来有 10 个运维,这么一搞可能两个就够了(留一个陪另一个吃饭)。

额,写到这里的时候重新看了下题,是对开发来讲的哈。。那我只能说,K8s 真的牛逼。。。

1c2a0180fd1a4025600e5b08bfb2b835.png

来自知乎好友“匿名好友”的回答

我司都没有运维部门,技术总监让我们只用 Docker 来部署一下,我们写好 Dockerfile 之后让生产机器让跑镜像,SLB 去反向代理。但容器 down 了 2 天大家都不知道,还是另一个同事闲的没事做看看日志才发现不对劲。半夜突然要扩容了怎么做?随手挑一台机器去部署容器然后手动改 Nginx/SLB ?

很多「总监」意识不到上云到底上的啥,毕竟它们连 Docker 这种 CRI 容器运行时接口是什么都没有搞清楚(不是所有人)。

云原生除了容器、微服务之外,核心的基础设施就是容器编排!Google 15 年的积累你说不需要就不需要?

现代运维部门、后端的架构部门,掌握 Kubernetes 已经是必备的了,因为它解决了微服务的部署问题,而且已然是容器编排的事实标准。别和我说 Docker Swarm,Docker 公司自己都放弃了。

来自知乎好友“作死w”的回答

不知道该不该用,那就不该用

前后干了几家公司上 K8s 微服务了,统一的体验就是架构设计稀烂,微服务不微,各种基础设施缺失或者没人维护。有的是把 K8s 当 docker-compose 用,有的是野心很大,这也要那也要,但开发维护的人手一只手数的过来。

想上 K8s 最好问问自己,上 K8s 想解决啥问题?K8s是不是最佳解决方案?做好长期和 K8s 相处的准备了吗,CI/CD 自动测试 QA 发布流程怎么迁移?以及想上微服务的,有足够的人手维护基础设施和迁移架构吗?有踩过坑带过队的领导,给你们拆服务、划边界、安排渐进重构吗?

从零开始的项目上 K8s 除了不用在x山代码里重构之外,拆服务划边界写文档还有基础设施维护等等细碎而且让人头大的工作,都是要跟老板要人力的。

除非上 K8s 还是老办法一把梭,无非把 docker run 换成 deployment,那这 K8s 其实用了就跟没用一样。像是另一位答主说服务 down了几个月没人知道。换到K8s上,Pod 不知道啥时候 evicted 了几个月也一样没人知道,节点啥时候挂了几个月也没人知道,某台节点莫名其妙挂上了 taint 也不会有人注意,又或者内存配额不够服务OOM重启了,代码报错了,死锁了,难道就有人注意了吗。

问题显然不是出在用 docker 还是 K8s,换 K8s 出的问题只会比用 docker run 直接跑的时候更多、更频繁、更隐蔽。

别把 K8s 当银弹,回归理性,好好想想为什么去用它,怎么用好它。

来自知乎好友“runzhliu”的回答

Kubernetes 的重点在于服务编排,这个才是 Kubernetes 真正流行的原因,当然基于 Kubernetes 上做一些架构的创新的想法一直都没停止过,未来会有更多的玩法。

回到问题,开发同学想用 Kubernetes 经常都是被 Kubernetes 强大的社区的宣传所洗脑……这个现象跟十年前 Hadoop/Spark 为代表的大数据框架开始流行很像。

因为很多宣发的文章都把这些新技术宣传的非常高大上,而比较少会提到这些新技术带来的技术管理和运维上的负担

虽然说大家都是从0开始摸着石头过河的,但是能过河终究要看人才能力上的储备,这就要通过存量的员工或者招聘来的员工来实现团队的建设了。

假设你公司的运维总监找来一个所谓搞过 K8S 的 Leader(实际只是做 K8S 机器运维的工作),要让这样的 Leader 带领公司的容器化工作,肯定是吃苦头的,因为实际他只是搞了机器交付的环节,对 K8S 内部的运作机器、容器、内核都不够熟悉,那么在招聘人才的时候,也经常会走漏眼,毕竟他自己都不懂,很难指望他能够建立一个足以应付大型业务的容器团队。

所以关于到底用不用,除了要考虑公司业务的形态,还得考虑人才和团队储备,而不是看了一堆通稿或者分享之后就兴致勃勃开始容器化。

4d72446a7d9cc29211ccbf906787694a.jpeg

来自知乎好友“RLLvmd”的回答

开发代码逻辑有问题,容易服务终止。K8s 自愈功能自动重启容器,一小时重启三千多次,硬生生扛下了所有,用户没发现服务中断。

来自知乎好友“网瘾大爷”的回答

上个月为了成本优化,把全部200多个节点都轮转了一遍,除了数据库节点和一些有状态服务节点,没麻烦其他人,总计2天。

这种操作在没有 K8s 的时候估计得加班搞几周,稍微不小心就是个P0故障。

来自知乎好友“Chen Moore”的回答

一共3、5 台 EC 实例的规模你别说 K8s 了,上个 SpringCloud 我都嫌麻烦。

整个 SpringBoot 前面扔个 Nginx 完事,这还是建立在必须得前后端分离用 Java 的基础上。

真要从0开始,这点规模。

我选择 react / vue + next.js 一把梭。

所以,到底需要不需上K8S,还得看具体的企业业务需求,而不是一股脑的跟风新技术,这样很容易把技术团队的成员搞的很累,得不偿失。

链接:https://zhihu.com/question/430952886/answer/2842100767

👍 如果你喜欢这篇文章,请点赞并分享给你的朋友!

公众号读者专属技术群

构建高质量的技术交流社群,欢迎从事后端开发、运维技术进群(备注岗位,已在技术交流群的请勿重复添加微信好友)。主要以技术交流、内推、行业探讨为主,请文明发言。广告人士勿入,切勿轻信私聊,防止被骗。

扫码加我好友,拉你进群

ab91f230710ec066144a93f9b473eee9.jpeg

4e087e51f862757a5da678245af09b13.gif

Ubuntu 2404 LTS 震撼登场!性能强悍、速度快

当前最好用的OCR 工具!无限制、断网可用,关键免费

这些国产软件只因免费强大,常被认为是老外开发的

为什么网上这么多破解的工具,但是官方却不管呢?

使用 VPN “翻墙”违法,为什么大部分人都没事?

服务器为什么大多用 Linux 而不是 Windows ?

49561a69207c529265d108352810cf83.png

PS:因为公众号平台更改了推送规则,如果不想错过内容,记得读完点一下在看,加个星标,这样每次新文章推送才会第一时间出现在你的订阅列表里。点在看支持我们吧!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值