k8s自身原理service及实现图文示例解析
引言
终于来到 k8s 自身的原理之 关于 Service 的一部分了
前面我们用 2 个简图展示了 pod 之间和 pod 与 node 之间是如何通信息的,且通信的数据包是不会经过 NAT 网络地址转换的
那么 Service 又是如何实现呢?
Service 我们知道是用来对外暴露服务的 ip 和 端口的,好让外部的客户端可以访问到我们内部 pod 提供的服务
另外 Service 管理的 pod ,实际的 ip 和 端口 列表,都是存放在对应的 endpoints 里面的
目前为止,我们也仅仅是停留在会使用 Service 了,那么 Service 自身的原理又是如何呢?我们一起来瞅瞅看
对于 Service 的服务 ip 地址,也是一个虚拟的,同时也是对外暴露了 1 个或者多个端口,既然是虚拟的,咱们肯定是 ping 不通的,例如我的 minikube 环境

当然,我们看了之前的分享之后,发现 k8s 中对于资源的变动,基本上都是使用的监听机制,那么对于 Service 的行为 和 endpoints 的行为,是不是同样是被不同的关键组件所监听呢?
我们可以用一个简图来了解一下:

图中,我们可以看到
- 一个 Service 管控的是 2 个 pod,具体的 ip 和 端口 列表 都是存放在 endpoints 中
- kube-proxy 会监控 ApiServer 中 Endpoints 对象的变化,若 endpoints 这中 list 有变化,kube-proxy 监听到之后,就会通知 iptables 去配置新的规则
- 例如环境中的 一个 pod 3 发请求给到咱们这个 Service,发出来的 目的地址是 Service 的地址和端口
- 但是通过 iptables 设定的规则进行转换,目的地址和端口就变成了 Service 管控的 pod 自己的 ip 和端口了
就看这个流程,好像也不复杂嘛,那么实际生产环境中也会是这样的吗?我们可以思考一下,更多关于k8s service实现原理的资料请关注脚本之家其它相关文章!
相关文章
k8s部署Pyroscope并分析golang性能瓶颈(最新推荐)
这篇文章主要介绍了k8s部署Pyroscope并分析golang性能瓶颈,Pyroscope支持多种编程语言并提供了丰富的性能数据,可以帮助我们跟踪应用程序的执行情况,并根据收集到的数据来识别性能瓶颈,需要的朋友可以参考下2023-04-04
云服务器Jenkins部署Springboot项目及Vue项目的详细过程
本文详细介绍了如何在云服务器上使用Jenkins部署Springboot和Vue项目,包括创建Springboot项目并上传到Git仓库、安装Maven和配置Maven插件、安装Gitee插件、配置Jenkins任务以及创建自由风格项目等步骤,感兴趣的朋友一起看看吧2025-02-02
青龙面板拉库解决没有或丢失依赖can‘t find module的保姆级教程(附青龙面板脚本仓库)
这篇文章主要介绍了青龙面板拉库解决没有或丢失依赖can‘t find module的保姆级教程(附青龙面板脚本仓库),需要的朋友可以参考下2022-05-05
基于云服务MRS构建DolphinScheduler2调度系统的案例详解
这篇文章主要介绍了基于云服务MRS构建DolphinScheduler2调度系统,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2022-05-05


最新评论