乐趣区

关于kubernetes: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 和端口了

就看这个流程,如同也不简单嘛,那么理论生产环境中也会是这样的吗?咱们能够思考一下

明天就到这里,学习所得,若有偏差,还请斧正

欢送点赞,关注,珍藏

敌人们,你的反对和激励,是我保持分享,提高质量的能源

好了,本次就到这里

技术是凋谢的,咱们的心态,更应是凋谢的。拥抱变动,背阴而生,致力向前行。

我是 阿兵云原生,欢送点赞关注珍藏,下次见~

退出移动版