系列文章:


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

目录

1 前言

2 邀约

3 k8s 流量进入集群方式

4 hostNetwork 样例

5 hostNetwork 影响

    5.1 Pod IP 和 Port

    5.2 node 个数跟 pod 副本数

6 hostNetwork 使用场景


1 前言

        如果你对博客有任何疑问,请告诉我。第二十四章 九析带你轻松完爆 Istio - k8s 流量进入集群之 hostNetwork_第1张图片


2 邀约

        你可以从 b 站搜索 “九析”,获取免费的、更生动的视频资料:第二十四章 九析带你轻松完爆 Istio - k8s 流量进入集群之 hostNetwork_第2张图片


3 k8s 流量进入集群方式

        k8s 集群外的流量如果要进入 k8s,通常有如下几种方式:

hostNetwork

NodePort

ClusterIP

LoadBalancer

Ingress

hostPort

        本节重点介绍 hostNetwork 方式。


4 hostNetwork 样例

        截图如下:第二十四章 九析带你轻松完爆 Istio - k8s 流量进入集群之 hostNetwork_第3张图片

        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。如下图所示:clipboard4.png

5.2 node 个数跟 pod 副本数

        如果 Pod 采用主机网络策略(hostNetwork:true),Pod 副本数不能超过 node 数,因为 pod 最终会采用 node 的网络命名空间,如果 pod 副本数多于 node 数,则会有些 pod 不能创建成功。如下图所示:第二十四章 九析带你轻松完爆 Istio - k8s 流量进入集群之 hostNetwork_第4张图片

        由上图可知,因为采用了 hostNetwork,所以在同一个 Node 节点(k8s-w-202)上就不能同时运行两个 pod,因为该 pod 都使用了同一个网络端口 8888。如下日志截图可知:clipboard6.png

        自此,我们可以得知,使用 hostNetwork 具有相当大的局限,首先 Pod 有可能被完爆,所以如果直接采用 IP 的方式跟 Pod 打交道会有不可预期的后果。此外,随着宿主机运行程序的增多,端口冲突的概率就会大大增加,因此 hostNetwork 的采用必须慎之又慎。


6 hostNetwork 使用场景

        一般情况下使用 hostNetwork 的场景多用在操作或者管理宿主机的网络环境上,比如我们经常使用的网络插件,比如 flannel、canal 等。这些网络插件可以完全控制集群中每个节点上的网络,比如可以将其他 pod (hotNetwork:false)连接到 overlay 网络中。下图展示本人的 canal 网络插件 pod 的配置:第二十四章 九析带你轻松完爆 Istio - k8s 流量进入集群之 hostNetwork_第5张图片