编程语言
首页 > 编程语言> > 第二十六章 九析带你轻松完爆 Istio - k8s 流量进入集群之 NodePort

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

作者:互联网

系列文章:


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

目录

1 前言

2 邀约

3 NodePort 样例

4 访问流程

5 实例演示

6 缺点


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 进程都会开启相关的端口。如果服务都采用这样的方式,端口就有冲突的可能。因此建议谨慎使用。

标签:完爆,kube,九析,service,端口,Istio,NodePort,k8s,proxy
来源: https://blog.51cto.com/14625168/2489488