亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

k8s-service中iptable node port實現原理是什么

發布時間:2021-11-15 14:26:36 來源:億速云 閱讀:420 作者:柒染 欄目:大數據

本篇文章給大家分享的是有關k8s-service中iptable node port實現原理是什么,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

在這里我們主要介紹node port的實現原理,當然我們這里的k8s容器網絡還是基于iptable的,不是基于ipvs的。

部署的nginx-ingress-controller的service我們可以看到:

  • 這個service為node prot類型

  • cluster ip為10.254.188.128

  • 這個cluster ip關聯了1個endpoints:10.1.27.2

  • host的8080端口映射到了cluster ip的80端口和pod的80端口

  • host的8443端口映射到了cluster ip的443端口和pod的443端口


kubectl describe service service-nginx-ingress -n kube-system

k8s-service中iptable node port實現原理是什么

對node port類型的service來說,訪問host的port就訪問到了這個服務。所以從host網絡角度來看,當host收到數據包的時候應該是進入host network namespace的PREROUTING chain中,我們查看host network namespace的PREROUTING chain。


iptables -nvL -t nat

k8s-service中iptable node port實現原理是什么

根據規則,對于PREROUTING chain中,所有的流量都走到了KUBE-SERVICES這個target中。

查看KUBE-SERVICES target:


iptables -nvL -t nat | grep KUBE-SVC

k8s-service中iptable node port實現原理是什么

在KUBE-SERVICES target中我們可以看到當訪問nginx-ingress-controller-service在host上的8080或者8443port的時候,根據規則匹配到了KUBE-NODEPORTS這個target。

查看KUBE-NODEPORTS target:


iptables -nvL -t nat

k8s-service中iptable node port實現原理是什么

在KUBE-NODEPORTS target中我們可以看到當訪問8080和8443時:

  • KUBE-MARK-MASQ均會匹配

  • KUBE-SVC-QY5PTWKILTPBPDCE匹配8080端口訪問

  • KUBE-SVC-SQYXO6PN7K55YEZU匹配8443端口訪問

查看KUBE-MARK-MASQ target:

這里只是做了一下標記,并沒有nat target。


iptables -nvL -t nat

k8s-service中iptable node port實現原理是什么

查看KUBE-SVC-QY5PTWKILTPBPDCE和KUBE-SVC-SQYXO6PN7K55YEZU兩個target:


iptables -nvL -t nat

k8s-service中iptable node port實現原理是什么

我們可以看到

  • KUBE-SVC-QY5PTWKILTPBPDCE匹配進入KUBE-SEP-WM2TRROMQQXWNW4W

  • KUBE-SVC-SQYXO6PN7K55YEZU匹配進入KUBE-SEP-7XLQX5JZL77UC7RY

  • 看到這里細心的同學是不是覺得很熟悉,沒錯,這和上一篇文章里cluster ip類型的service在ipable里如出一轍。唯一不同的是上一篇文章里的例子nginx-application-service有2個endpoints,這里nginx-ingress-controller-service只有一個endpoint。所以會匹配到一個KUBE-SEP-XXX,如果有多個endpoints,那么一定會leverage內核隨機模塊random按百分比來均勻的匹配,從而實現對pord的訪問負載均衡

查看KUBE-SEP-WM2TRROMQQXWNW4W和KUBE-SEP-7XLQX5JZL77UC7RY兩個target:


iptables -nvL -t nat

k8s-service中iptable node port實現原理是什么

k8s-service中iptable node port實現原理是什么

我們可以看到

  • 做了MASQ操作,當然這個應該是出站engress流量(限定了source ip),不是我們的入站ingress流量。

  • 做了DNAT操作,把原來的cluster ip給DANT轉換成了pod的ip 10.1.27.2,把原來的port轉換成了80或者443 port。

  • 根據iptable,經過PREROUTING chain發現DNAT之后的10.1.27.2不是本地的ip(肯定不是,因為這個ip是pod的ip,當然不會在host的network namespace里)。所以就走到了Forwarding chain中,根據host network namespace的路由表來決定下一跳地址。

所以綜合上面的例子,對于ipable方式的k8s集群內node port類型的service總結為:

  • 在host netwok namespace的PREROUTING chain中會匹配KUBE-SERVICES target。

  • 在KUBE-SERVICES target會匹配KUBE-NODEPORTS target

  • 在KUBE-NODEPORTS target會根據prot來匹配KUBE-SVC-XXX target

以上就是k8s-service中iptable node port實現原理是什么,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

合水县| 全州县| 怀远县| 方正县| 天津市| 正宁县| 安图县| 洛隆县| 浑源县| 阳新县| 定边县| 扎鲁特旗| 布拖县| 满城县| 义乌市| 乐昌市| 紫阳县| 化隆| 涿鹿县| 奈曼旗| 平定县| 奉新县| 襄城县| 宁海县| 兴隆县| 仁布县| 广饶县| 响水县| 财经| 旬阳县| 鹿邑县| 贺兰县| 开平市| 西藏| 桂阳县| 灵寿县| 汨罗市| 斗六市| 常山县| 巫溪县| 尖扎县|