第二十六章 九析带你轻松完爆 Istio - k8s 流量进入集群之 NodePort

系列文章:node


总目录索引:九析带你轻松完爆 istio 服务网格系列教程后端

目录网络

1 前言app

2 邀约curl

3 NodePort 样例ide

4 访问流程url

5 实例演示spa

6 缺点orm


1 前言
视频

        若是你对博客有任何疑问,请告诉我。1.png


2 邀约

        你能够从 b 站搜索 “九析”,获取免费的、更生动的视频资料:clipboard2.png


3 NodePort 样例

        跟 hostNetwork 和 hostPort 不一样,NodePort 属于 service 类型之一。hostPort 和 hostNetwork 做用对象是 Pod,而 NodePort 做用对象则是 service。

        pod 文件以下所示:clipboard3.png

        service 文件以下:clipboard4.png

        建立 NodePort 服务时,用户能够在 30000 ~ 32767 范围内指定一个端口,也能够经过 patch 打补丁的方式修改 service 类型,这样 NodePort 端口将会在范围 30000 ~ 32767 之间自动分配。

kubectl patch svc svc_name -n ns_name -p '{"type": "NodePort"}'


4 访问流程

        下图展现当 k8s svc 建立以后,k8s 集群内部都发生了哪些变化。clipboard5.png

        当 client 发送 kubectl apply 指令给 APIServer 后,会生成相关的 service 对象,k8s 集群内的全部节点(master 和 node)上都会运行 kube-proxy 进程,以下截图所示:clipboard6.png

        该进程的做用就是负责跟 APIServer 进行通讯并对 node 上的 pod 进行生命周期管理。若是建立了 k8s service ,那么 kube-proxy 会建立相应的 iptables 规则,并将发送到 service nodePort 的流量转发到 service 后端提供的 Pod 的相应端口上。


5 实例演示

        当执行 jiuxi-svc.yaml 资源文件后,以下截图所示:clipboard7.png

        查看网络监控接口可知 30088 对应的服务进程就是 kube-proxy,以下图所示:clipboard8.png

        当咱们经过 curl 访问 hostIP:30088 时,数据包会经过 30088 端口送给 kube-proxy 进程,kube-proxy 进程会根据 k8s service 的 endpoint 将数据包路由到实际的 pod IP 和对应的端口去。以下截图查看 service 对应的 endpoints。clipboard9.png


6 缺点

        使用 NodePort 方式,在 k8s 集群内部,每一个节点(master 或 node)上 kube-proxy 进程都会开启相关的端口。若是服务都采用这样的方式,端口就有冲突的可能。所以建议谨慎使用。

相关文章
相关标签/搜索