Iptables

定义service 类型为 ClusterIP

kubectl get svc -owide
nginx-basic   ClusterIP   10.101.157.173   <none>        80/TCP    42h   app=nginxkubectl get pods -owidenginx-deployment-6799fc88d8-dmhk9   1/1     Running   0          27m   10.224.0.11   node1   <none>           <none>
nginx-deployment-6799fc88d8-m6vsc   1/1     Running   0          27m   10.224.0.9    node1   <none>           <none>
nginx-deployment-6799fc88d8-mmgxl   1/1     Running   0          27m   10.224.0.10   node1   <none>           <none># 使用iptables-save 查看路由规则iptables-save -t nat-A PREROUTING -m comment --comment "kubernetes service portals" -j KUBE-SERVICES
-A add -m message -j jump  所有进来的包在出prerouting 这个包都要去kube-service 中去看看-A OUTPUT -m comment --comment "kubernetes service portals" -j KUBE-SERVICES
-A add -m message -j jump  所有出来的包在出prerouting 这个包都要去kube-service 中去看看-A KUBE-SERVICES -d 10.101.157.173/32 -p tcp -m comment --comment "default/nginx-basic:http cluster IP" -m tcp --dport 80 -j KUBE-SVC-WWRFY3PZ7W3FGMQW-d destination(目标)iptable 规则说明一条一套执行  有百分之33的几率被KUBE-SEP-ZMFA63VDZWTWAEBQ 这个chain 处理
-A KUBE-SVC-WWRFY3PZ7W3FGMQW -m comment --comment "default/nginx-basic:http" -m statistic --mode random --probability 0.33333333349 -j KUBE-SEP-ZMFA63VDZWTWAEBQ-A KUBE-SEP-ZMFA63VDZWTWAEBQ -s 10.224.0.10/32 -m comment --comment "default/nginx-basic:http" -j KUBE-MARK-MASQ-A KUBE-SEP-ZMFA63VDZWTWAEBQ -p tcp -m comment --comment "default/nginx-basic:http" -m tcp -j DNAT --to-destination :0 --persistent --to-destination :0 --persistent --to-destination-A KUBE-SVC-WWRFY3PZ7W3FGMQW -m comment --comment "default/nginx-basic:http" -m statistic --mode random --probability 0.50000000000 -j KUBE-SEP-B7KA7M3EBT33ZNQX-A KUBE-SEP-B7KA7M3EBT33ZNQX -s 10.224.0.11/32 -m comment --comment "default/nginx-basic:http" -j KUBE-MARK-MASQ-A KUBE-SEP-B7KA7M3EBT33ZNQX -p tcp -m comment --comment "default/nginx-basic:http" -m tcp -j DNAT --to-destination :0 --persistent --to-destination :0 --persistent --to-destination-A KUBE-SVC-WWRFY3PZ7W3FGMQW -m comment --comment "default/nginx-basic:http" -j KUBE-SEP-YUJMBOAQBKLEZT3R-A KUBE-SEP-YUJMBOAQBKLEZT3R -s 10.224.0.9/32 -m comment --comment "default/nginx-basic:http" -j KUBE-MARK-MASQ -A KUBE-SEP-YUJMBOAQBKLEZT3R -p tcp -m comment --comment "default/nginx-basic:http" -m tcp -j DNAT --to-destination :0 --persistent --to-destination :0 --persistent --to-destination最终结论为:从上可以看出k8s 通过service 的流量会路由到pod 中去 

定义service 类型为 NodePort

-A KUBE-NODEPORTS -p tcp -m comment --comment "default/nginx-basic:http" -m tcp --dport 31219 -j KUBE-SVC-WWRFY3PZ7W3FGMQWnetstat -na|grep 31219
tcp        0      0 0.0.0.0:31219           0.0.0.0:*               LISTENnetstat -nap|grep 31219
tcp        0      0 0.0.0.0:31219           0.0.0.0:*               LISTEN      52480/kube-proxy查看-j KUBE-SVC-WWRFY3PZ7W3FGMQW 与上图service类型为ClusterIP一致 也是往三个Pod 中转发流量

ipvs

IPVS 修改kube-proxy 的configmap中修改对应的mode 然后改为ipvsipvsadm -l
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  node1:31219 rr-> 10.224.0.9:http              Masq    1      0          0-> 10.224.0.10:http             Masq    1      0          0-> 10.224.0.11:http             Masq    1      0          0
TCP  node1:31219 rr-> 10.224.0.9:http              Masq    1      0          0-> 10.224.0.10:http             Masq    1      0          0-> 10.224.0.11:http             Masq    1      0          0
TCP  node1:https rr-> node1:sun-sr-https           Masq    1      4          0
TCP  node1:domain rr-> 10.224.0.7:domain            Masq    1      0          0-> 10.224.0.8:domain            Masq    1      0          0
TCP  node1:9153 rr-> 10.224.0.7:9153              Masq    1      0          0-> 10.224.0.8:9153              Masq    1      0          0
TCP  node1:http rr-> 10.224.0.9:http              Masq    1      0          0-> 10.224.0.10:http             Masq    1      0          0-> 10.224.0.11:http             Masq    1      0          0
TCP  node1:31219 rr-> 10.224.0.9:http              Masq    1      0          0-> 10.224.0.10:http             Masq    1      0          0-> 10.224.0.11:http             Masq    1      0          0
TCP  node1:31219 rr-> 10.224.0.9:http              Masq    1      0          0-> 10.224.0.10:http             Masq    1      0          0-> 10.224.0.11:http             Masq    1      0          0
UDP  node1:domain rr-> 10.224.0.7:domain            Masq    1      0          0-> 10.224.0.8:domain            Masq    1      0          0使用iptables -F -t nat然后再次查看下面的规则 会发现多了一条IPSET 现在使用ipvs 的话会做一个 IP 伪装 KUBE-MARK-MASQiptables-save -t nat
# Generated by iptables-save v1.4.21 on Wed Feb 16 13:31:44 2022
*nat
:PREROUTING ACCEPT [32:1440]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [47:2820]
:POSTROUTING ACCEPT [47:2820]
:DOCKER - [0:0]
:KUBE-FIREWALL - [0:0]
:KUBE-KUBELET-CANARY - [0:0]
:KUBE-LOAD-BALANCER - [0:0]
:KUBE-MARK-DROP - [0:0]
:KUBE-MARK-MASQ - [0:0]
:KUBE-NODE-PORT - [0:0]
:KUBE-NODEPORTS - [0:0]
:KUBE-POSTROUTING - [0:0]
:KUBE-PROXY-CANARY - [0:0]
:KUBE-SEP-B7KA7M3EBT33ZNQX - [0:0]
:KUBE-SEP-DWSBRBKMJKQCC6K6 - [0:0]
:KUBE-SEP-H7GRETGDBNJH3TNF - [0:0]
:KUBE-SEP-M7D4TRPAWXXY3RIC - [0:0]
:KUBE-SEP-OZ2EEVAFCTBCWHHW - [0:0]
:KUBE-SEP-P6X6TGMQCZ3YXVTJ - [0:0]
:KUBE-SEP-TGTH74NZUASQJRDW - [0:0]
:KUBE-SEP-WQDGZCN3UF6UPQZM - [0:0]
:KUBE-SEP-YUJMBOAQBKLEZT3R - [0:0]
:KUBE-SEP-ZMFA63VDZWTWAEBQ - [0:0]
:KUBE-SERVICES - [0:0]
:KUBE-SVC-ERIFXISQEP7F7OF4 - [0:0]
:KUBE-SVC-JD5MR3NA4I4DYORP - [0:0]
:KUBE-SVC-NPX46M4PTMTKRN6Y - [0:0]
:KUBE-SVC-TCOU7JCQXEZGVUNU - [0:0]
:KUBE-SVC-WWRFY3PZ7W3FGMQW - [0:0]
:cali-OUTPUT - [0:0]
:cali-POSTROUTING - [0:0]
:cali-PREROUTING - [0:0]
:cali-fip-dnat - [0:0]
:cali-fip-snat - [0:0]
:cali-nat-outgoing - [0:0]
-A PREROUTING -m comment --comment "kubernetes service portals" -j KUBE-SERVICES
-A OUTPUT -m comment --comment "kubernetes service portals" -j KUBE-SERVICES
-A POSTROUTING -m comment --comment "kubernetes postrouting rules" -j KUBE-POSTROUTING
-A KUBE-FIREWALL -j KUBE-MARK-DROP
-A KUBE-LOAD-BALANCER -j KUBE-MARK-MASQ
-A KUBE-MARK-MASQ -j MARK --set-xmark 0x4000/0x4000
-A KUBE-NODE-PORT -p tcp -m comment --comment "Kubernetes nodeport TCP port for masquerade purpose" -m set --match-set KUBE-NODE-PORT-TCP dst -j KUBE-MARK-MASQ
-A KUBE-POSTROUTING -m comment --comment "Kubernetes endpoints dst ip:port, source ip for solving hairpin purpose" -m set --match-set KUBE-LOOP-BACK dst,dst,src -j MASQUERADE
-A KUBE-POSTROUTING -m mark ! --mark 0x4000/0x4000 -j RETURN
-A KUBE-POSTROUTING -j MARK --set-xmark 0x4000/0x0
-A KUBE-POSTROUTING -m comment --comment "kubernetes service traffic requiring SNAT" -j MASQUERADE
-A KUBE-SERVICES ! -s 10.244.0.0/16 -m comment --comment "Kubernetes service cluster ip + port for masquerade purpose" -m set --match-set KUBE-CLUSTER-IP dst,dst -j KUBE-MARK-MASQ
-A KUBE-SERVICES -m addrtype --dst-type LOCAL -j KUBE-NODE-PORT
-A KUBE-SERVICES -m set --match-set KUBE-CLUSTER-IP dst,dst -j ACCEPT
COMMIT

K8s 中 iptables 和ipvs 的理解相关推荐

  1. K8S中iptables和ipvs区别

    原文 从k8s的1.8版本开始,kube-proxy引入了IPVS模式,IPVS模式与iptables同样基于Netfilter,但是ipvs采用的hash表,iptables采用一条条的规则列表.i ...

  2. k8s中pv和pvc如何理解

    k8s中pv和pvc如何理解 持久化与有状态应用的误区 k8s 带来的持久化问题和应用状态问题 认识PV/PVC/StorageClass 快速理解 生命周期 持久化与有状态应用的误区 刚接触k8s的 ...

  3. K8s9(2-1) k8s中的通信机制, kube-proxy的ipvs模式 ,无头服务,LoadBalancer,ExternalName,外部公有 ip(externalIPs)

    1.K8s中的service和通信: Service可以看作是一组提供相同服务的Pod对外的访问接口.借助Service,应用可以方便地实现服务发现和负载均衡. service默认只支持4层负载均衡能 ...

  4. k8s里面的iptables和ipvs有什么区别?怎么选?为什么选择ipvs

    在 Kubernetes 中,Iptables 和 IPVS 都是负责流量转发的工具,但是在实现上有一些区别,可以根据不同的场景来选择使用. Iptables 是 Linux 系统内置的一个工具,可以 ...

  5. 【云原生】k8s(Kubernetes)中yaml文件快速阅读理解

    简言: k8s yaml中文件内容一般有kind类型之分,每种类型有不同的功能(一般用---符号隔开) 常见的kind类型:         (1)Endpoints:Endpoints可以把外部的链 ...

  6. 如何理解k8s中limit限制cpu单位

    如何理解k8s中limit限制cpu单位 官方对单位的解释: https://v1-14.docs.kubernetes.io/zh/docs/tasks/configure-pod-containe ...

  7. iptables和ipvs

    一.service和iptables的关系 service 的代理是 kube-proxy kube-proxy 运行在所有节点上,它监听 apiserver 中 service 和 endpoint ...

  8. k8s中service类型

    Kubernetes Kubernetes Pods是有生命周期的.他们可以被创建,而且销毁不会再启动. 如果您使用Deployment来运行您的应用程序,则它可以动态创建和销毁 Pod. 一个Kub ...

  9. kubernetes(三)k8s中通信和Service

    目录 1.同一个Pod中的容器通信 2.集群内Pod之间的通信 3 集群内Service-Cluster IP 4.外部服务访问集群中的Pod 4.1 Service-NodePort 4.2.Ser ...

  10. K8S kube-proxy iptables 原理分析

    Precondition 什么是 Kube Proxy Kube Proxy 原理 部署环境 搭建一个GuestBook 例子 分析iptables 1. 创建iptables实现外网通过nodePo ...

最新文章

  1. 来字节才发现,31岁程序员已经是大团队里最老的了!才发现自己从未真的努力,虽然每天加班到十二点,但只怀着赶紧干完的抱怨!...
  2. 声场模型如何区分近场和远场
  3. 熟悉Java String的使用,熟悉String的各种函数,Java中各种变量类型
  4. WEB服务在单点登录系统中的应用研究
  5. 第三届山东大数据-威海赛区-民宿空置预测-排行榜
  6. win11怎么改任务栏大小
  7. 第二单元作业——电梯模拟总结
  8. opencv计算图像亮度调节_OpenCV教程创建Trackbar图像对比度、亮度值调整
  9. Kotlin开发细节
  10. 【bzoj 4675】 点对游戏
  11. cssmatic gradient css generator,10 Best CSS Gradient Generators
  12. 图网络模型原理详解(Graph Network)
  13. 众为兴SCARA四轴机械臂编程(一)——基于ModbusTCP协议
  14. 国产麒麟操作系统kylin V10 sp2操作系统安装openldap和kerberos
  15. gitbook:epub电子书制作教程
  16. 流式计算利器-Storm
  17. 【SQL注入】手工注入常用语句合集
  18. 【原生Ajax】全面了解xhr的概念与使用。
  19. 浙江临海一民警收到“红牌警告”:立即停止工作
  20. 华裔女性钱璐璐:用 DNA 开发人工智能神经网络,识别手写数字!

热门文章

  1. lokohelp康复机器人_Lokohelp康复机器人在脑卒中偏瘫患者下肢运动功能恢复中的应用...
  2. 免费采集器-网页数据采集器
  3. 可以打开c语言的压缩包软件,File Magic(全格式文件打开软件)v1.9.8.19免费版
  4. U8文件服务器备份,u8备份缓存文件在哪
  5. Python2.x和Python3.x版本的区别
  6. 现代程序设计 homework-10
  7. 3D旋转相册(附源码+素材)
  8. 鲁冠球:冲向世界的打铁匠
  9. 数据库中的 “行式存储”和“列式存储”
  10. python大作业黑白棋_计算概论大作业——黑白棋AI设计