首页 > 其他 > 详细

kube-proxy实现原理

时间:2019-09-17 15:09:22      阅读:103      评论:0      收藏:0      [点我收藏+]

1.service概念

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

  举个例子,现在有podA,podB,podC和serviceAB。serviceAB是podA,podB的服务抽象(service)。
那么kube-proxy的作用就是可以将pod(不管是podA,podB或者podC)向serviceAB的请求,进行转发到service所代表的一个具体pod(podA或者podB)上。
请求的分配方法一般分配是采用轮询方法进行分配。

2.暴露node端口与service访问

另外,kubernetes还提供了一种在node节点上暴露一个端口,从而提供从外部访问service的方式。

比如我们使用这样的一个manifest来创建service

apiVersion: v1
kind: Service
metadata:
  labels:
    name: mysql
    role: service
  name: mysql-service
spec:
  ports:
    - port: 3306
      targetPort: 3306
      nodePort: 30964
  type: NodePort
  selector:
    mysql-service: "true"

含义是在node上暴露出30964端口。当访问node上的30964端口时,其请求会转发到service对应的cluster IP的3306端口,并进一步转发到pod的3306端口。

3.kube-proxy实现方式

kuer-proxy目前有userspace和iptables两种实现方式。

(1) userspace是在用户空间,通过kuber-proxy实现LB的代理服务。这个是kube-proxy的最初的版本,较为稳定,但是效率也自然不太高。

(2) iptables的方式。是纯采用iptables来实现LB。是目前一般kube默认的方式

4.service 和 ep(endpoint)是如何关联和相互影响的

(1)  api-server创建service对象,与service绑定的pod地址:称之为endpoints

(2)  服务发现方面:kube-proxy监控service后端endpoint的动态变化,并且维护service和endpoint的映射关系

技术分享图片

 

kube-proxy实现原理

原文:https://www.cnblogs.com/NGU-PX/p/11533842.html

(1)
(1)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!