kube-proxy的工作原理(实例说明)

本文深入解析Kubernetes中Service的概念及其实现原理,包括clusterIP和nodePort两种工作方式,并通过具体的配置实例展示如何进行访问。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

service是一组pod的服务抽象,相当于一组pod的LB,负责将请求分发给对应的pod。
service会为这个LB提供一个IP,一般称为cluster IP。
kube-proxy的作用主要是负责service的实现,具体来说,就是实现了内部从pod到service和外部的从node port向service的访问。


以下,我们使用kubernetes + flannel(xvlan) 的网络配置模式做一个试验,例如:

service.yaml :

apiVersion: v1
kind: Service
metadata:
  labels:
    app: busybox
  name: busybox
  namespace: default
spec:
  type: NodePort
  ports:
  - name: s-tcp
    nodePort: 30382
    port: 30382
    protocol: TCP
    targetPort: 30382
  selector:
    app: busybox


查看服务信息:

$ kubectl get all -o wide |grep busybox 

po/busybox-deployment-2396788737-zksf9 1/1 Running 0 12d 172.30.46.2 192.168.0.100
svc/busybox 10.254.119.211 <nodes> 30382:30382/TCP 12d app=busybox

1.nodePort的工作方式:
通过node的30382访问,则会进入到以下链:
-A KUBE-NODEPORTS -p tcp -m comment --comment "default/busybox:s-tcp" -m tcp --dport 30382 -j KUBE-MARK-MASQ
-A KUBE-NODEPORTS -p tcp -m comment --comment "default/busybox:s-tcp" -m tcp --dport 30382 -j KUBE-SVC-RQ7VYX4MRUCA3BSP

然后进一步跳转到KUBE-SVC-RQ7VYX4MRUCA3BSP链:
-A KUBE-SVC-RQ7VYX4MRUCA3BSP -m comment --comment "default/busybox:s-tcp" -j KUBE-SEP-EENEXWEI4D6ZTMUF

KUBE-SEP-EENEXWEI4D6ZTMUF链的具体作用就是将请求通过DNAT发送到POD(172.30.46.2)的30382端口:
-A KUBE-SEP-EENEXWEI4D6ZTMUF -s 172.30.46.2/32 -m comment --comment "default/busybox:s-tcp" -j KUBE-MARK-MASQ
-A KUBE-SEP-EENEXWEI4D6ZTMUF -p tcp -m comment --comment "default/busybox:s-tcp" -m tcp -j DNAT --to-destination 172.30.46.2:30382


2.clusterIP的访问方式:
对于直接访问cluster IP(10.254.162.44)的30382端口会直接跳转到KUBE-SVC-RQ7VYX4MRUCA3BSP。
-A KUBE-SERVICES ! -s 10.254.0.0/16 -d 10.254.119.211/32 -p tcp -m comment --comment "default/busybox:s-tcp cluster IP" -m tcp --dport 30382 -j KUBE-MARK-MASQ
-A KUBE-SERVICES -d 10.254.119.211/32 -p tcp -m comment --comment "default/busybox:s-tcp cluster IP" -m tcp --dport 30382 -j KUBE-SVC-RQ7VYX4MRUCA3BSP

参考:

kubernetes services介绍 :http://blog.youkuaiyun.com/kozazyh/article/details/79536810

官方详细介绍: https://kubernetes.io/docs/concepts/services-networking/service/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值