当前位置:首页 > 每日看点 > 正文内容

在 Kubernetes 中,Service 的实现原理是什么,它是如何实现服务发现的?

卡卷网1年前 (2024-11-20)每日看点261

行,问的这个问题挺有意思,Kubernetes 里 Service 是怎么实现的,服务发现是怎么回事,咱就直说了。这事儿看起来挺玄乎,但掰开揉碎了讲,也就那么回事。你得把这事儿想得简单点,别一上来就被啥术语吓住了——其实全是些搬砖的套路。

咱先从个大方向捋,Kubernetes 这东西,说白了就是个工头,它管理着一堆工人,也就是咱们那些服务(Pods)。你想在工地上指挥一堆工人干活儿,总得有个方式让他们互相认识吧?这就是服务发现的基本需求。然后,Kubernetes 的 Service 就是起了个“指路标”的作用——给工地的工人们找对门儿。

最近无意间获得一份阿里大佬写的刷题笔记,一下子打通了我的任督二脉,进大厂原来没那么难。这是大佬写的,7701页的BAT大佬写的刷题笔记,让我offer拿到手软

1. Service 是干啥的?

Kubernetes 的 Service 本质上就是个“中间商”,负责把请求从外部引导到具体的 Pod 上。为什么要 Service?很简单,因为你直接跟 Pod 打交道不靠谱。Pod 是会“挂”的,跟你的临时工一样,干一阵子走人了,来了新的 Pod,这时候外部流量还是傻乎乎地跑去找原来的 Pod,找不到了,这不就完犊子了么?

所以,Service 出来了,搞了个虚拟 IP,背后帮你去找 Pod。你就别管 Pod 换来换去了,反正都能接着用这个虚拟 IP 跟服务通信。

Kubernetes 里的 Service 有几种类型,最常见的就是 ClusterIP。你可以理解成,你站在工地门口,只能通过工地发号施令,但你不能直接进工地里面挑工人干活儿。Service 就是站在门口收任务,然后再悄悄把活儿分给工人。

2. 服务发现怎么玩的?

这个服务发现咋实现的呢?你要知道,工人(Pod)是动态的,今天来俩,明天走一个,工地还得照常干活儿。这就得靠 Kubernetes 自己给工人打卡登记了。

Service 有个牛逼的地方,叫做“标签选择器”(Label Selector)。简单来说,Kubernetes 会给每个 Pod 发一个小牌子(Label),比如“我是干前端的”或者“我是干数据库的”,然后 Service 就盯着这些牌子,按照需求把流量引过去。就像在工地上,你只要告诉 Service 你需要哪种工人,Service 就能从一堆 Pod 里挑出合适的给你用。

有的哥们可能会问,那服务一多,我怎么知道哪个服务对应哪个 Pod 呢?这就得提 DNS(域名解析)了。在 Kubernetes 里,集群内部有个自带的 DNS 服务,Service 一旦创建成功,Kubernetes 就会自动给它分配一个域名。你只需要通过这个域名就能找到 Service,就像在公司里发邮件一样,用名字就能找到同事,不用管背后换了多少电脑。

3. LoadBalancer 和 NodePort 这两货啥时候用?

ClusterIP 那一套咱们已经说了,它只在集群内部起作用。那问题来了,如果我想把服务暴露出去给外部的客户用呢?这时候你就得用 LoadBalancer 或者 NodePort。

LoadBalancer 其实就是给你配了个“公司前台”,外部请求来了,前台接单,再把活儿转到内部工人那儿去。这玩意儿更智能,自动帮你搞定所有负载均衡的事情,客户从外面看着还挺牛,但其实后面就是一堆工人不停地干活。

NodePort 是啥?这个比较原始,简直跟老工厂里守大门的保安一样。NodePort 是给每个工人直接开了个大门,客户一来,不管啥时候,总有人在门口守着,接到请求就送到工人那儿。你说这玩意儿听着多靠谱,其实毛病不少——你得自己维护这扇门,还不如前面那个自动接活儿的 LoadBalancer 省心。

4. 真实场景:怎么实现 Service 更新?

咱说点实际的,比如你想更新一个服务,但又不能影响客户使用,那 Service 是怎么做到的呢?其实很简单,叫做滚动更新。当你升级服务时,Kubernetes 会自动在后台干活儿,把老的 Pod 换成新的,而外部请求还是通过那个虚拟 IP 进入,这样不管你怎么换工人,客户都看不出来。这种操作简直就是职场里换人不换岗,你明明换了个菜鸟,但客户还是觉得你服务一如既往地好。

5. 可能的坑:Service 不能直接解决所有问题

当然了,Service 也不是万能的。你要指望它帮你搞定所有微服务之间的通信问题,那就是有点扯。比如说,服务间的安全性、数据的持久化、复杂的网络拓扑,Service 解决不了这些事儿,这就得靠你自己或者其他手段了。

总结一下,Kubernetes 里的 Service 本质上就是个“中介”,它帮你找到正确的 Pod,确保服务可用,而服务发现这一套则是通过标签选择器和内部 DNS 系统实现的。各种 Service 类型根据不同的需求来选用,搞清楚了这些,就知道啥场景用啥东西了。

Kubernetes 看着高大上,其实就是把复杂的事情简单化了。你真搞懂了它的原理,很多问题就不再是问题,毕竟服务发现这玩意儿,就像在职场里找对人干对事一样,你得有方法,别瞎跑。

好了,就这么多,有空了再聊。

免费看 500 套技术教程的网站,希望对你有帮助

程序员快看-教程,程序员编程资料站
最近无意间获得一份阿里大佬写的刷题笔记,一下子打通了我的任督二脉,进大厂原来没那么难。这是大佬写的,7701页的BAT大佬写的刷题笔记,让我offer拿到手软

求一键三连:点赞、分享、收藏

我的技术网站:cxykk.com 里面有,500套技术系列教程、1万+道,面试八股文、BAT面试真题、简历模版,工作经验分享、架构师成长之路,全部免费,欢迎收藏和转发。

扫描二维码推送至手机访问。

版权声明:本文由卡卷网发布,如需转载请注明出处。

本文链接:https://www.kajuan.net/ttnews/2024/11/1081.html

分享给朋友:

相关文章

逾期后支付宝微信被冻结,显示执保该怎么办?

这几天有朋友问我说,他的微信零钱突然的用不了,问我是不是被冻结了,问我该怎么办?是不是被起诉了?这个,那个,别慌,别慌,还是那句老话:有钱就去协商,没钱只能暂时不管!但是真不管,这个被冻结的微信怎么办呢?今天针对这个问题,我就给大家做一哥比...

有了Istio,开发还需要微服务架构吗?

有了Istio,开发还需要微服务架构吗?

Istio 是一个开源的服务网格(Service Mesh),通过它可以实现对服务间通信的管理和监控。对于那些本身没有设计为具备安全功能的传统应用程序,Istio 可以提供一个“透明”的安全保护层,而不需要对应用本身进行任何代码修改。 I...

为什么苹果贵没人喷,华为贵一群人喷?

苹果:6:¥5288,6s:¥5288,7:¥5288,8:¥5288,XR:¥6299,11:¥5499,12:¥5999,13:¥5999,14:¥5999,15:¥5999,16:¥5999华为:P8:¥2888,P9:¥2988,P...

闲鱼上为什么会有人问都不问直接下单?

我去年卖一个荣耀90,挂的2200,最终成交2137.5元。对方是一个高高壮壮的西北口音,要求的自取。大概我吃过午饭,约了旁边的商场,那里有荣耀售后。见了面,先看了手机,试了好一会儿,各种测试,没问题。然后去了商场二楼的荣耀售后,让人家售后...

用wordpress做这个网站的话,需要用到哪些插件?

一个完整成型的B2C电商独立站,如果用wordpress+woocommerce搭建,最终会用上20来个插件,而且是在经过慎重筛选,剔除不必要的插件的情况下,别问我为什么。wordpress建站,插件安装多了,速度会变慢,这是常识,但需要在...

抖音小店三个月了一单没出,也没有流量,一个星期好像都没有一个点击,怎么办?

抖音小店三个月了一单没出,也没有流量,一个星期好像都没有一个点击,怎么办?

好消息,你有毅力上200多个品,还能坚持三个月坏消息,一单没出我感觉你还是别碰抖店了,甚至电商平台都别碰 你没这个缘分我要是这样,我得用一百辆叉车叉死我自己你如果还想坚持,我直接给你这套至少价值19800学来的新思路简单来说就是 你做的好的...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。