第二十四章 九析带你轻松完爆 Istio - k8s 流量进入集群之 hostNetwork
作者:互联网
系列文章:
总目录索引:九析带你轻松完爆 istio 服务网格系列教程
目录
1 前言
2 邀约
3 k8s 流量进入集群方式
4 hostNetwork 样例
5 hostNetwork 影响
5.1 Pod IP 和 Port
5.2 node 个数跟 pod 副本数
6 hostNetwork 使用场景
1 前言
如果你对博客有任何疑问,请告诉我。
2 邀约
你可以从 b 站搜索 “九析”,获取免费的、更生动的视频资料:
3 k8s 流量进入集群方式
k8s 集群外的流量如果要进入 k8s,通常有如下几种方式:
hostNetwork
NodePort
ClusterIP
LoadBalancer
Ingress
hostPort
本节重点介绍 hostNetwork 方式。
4 hostNetwork 样例
截图如下:
hostNetwork 只能作用在 Pod 上。如果 Pod 开启了 hostNetwork: true,则该 Pod 直接使用当前宿主机的网络空间,如果 Pod 内的进程需要开启网络监听接口,就会直接在当前宿主机开启。如上图可知一个 Pod 内运行一个 busybox 的容器,该 busybox 容器内的 httpd 进程会开启 8888 网络监听端口,而该端口会直接开启在 Pod 所在宿主机上。
5 hostNetwork 影响
5.1 Pod IP 和 Port
如果 Pod 采用主机网络策略(hostNetwork:true),其 IP 就是宿主机的 IP,其 Port 就是宿主机的 Port。如下图所示:
5.2 node 个数跟 pod 副本数
如果 Pod 采用主机网络策略(hostNetwork:true),Pod 副本数不能超过 node 数,因为 pod 最终会采用 node 的网络命名空间,如果 pod 副本数多于 node 数,则会有些 pod 不能创建成功。如下图所示:
由上图可知,因为采用了 hostNetwork,所以在同一个 Node 节点(k8s-w-202)上就不能同时运行两个 pod,因为该 pod 都使用了同一个网络端口 8888。如下日志截图可知:
自此,我们可以得知,使用 hostNetwork 具有相当大的局限,首先 Pod 有可能被完爆,所以如果直接采用 IP 的方式跟 Pod 打交道会有不可预期的后果。此外,随着宿主机运行程序的增多,端口冲突的概率就会大大增加,因此 hostNetwork 的采用必须慎之又慎。
6 hostNetwork 使用场景
一般情况下使用 hostNetwork 的场景多用在操作或者管理宿主机的网络环境上,比如我们经常使用的网络插件,比如 flannel、canal 等。这些网络插件可以完全控制集群中每个节点上的网络,比如可以将其他 pod (hotNetwork:false)连接到 overlay 网络中。下图展示本人的 canal 网络插件 pod 的配置:
标签:完爆,宿主机,九析,hostNetwork,网络,Pod,k8s,pod 来源: https://blog.51cto.com/14625168/2488662