k8s笔记(5)-- Service和Kube-Porxy

什么是service

k8s中的服务发现和负载均衡。通俗的说就是映射一个虚拟IP(VIP)到指定的端口,通过代理客户端发来的请求会转发到后端一组Pods中的一台(也就是endpoint)上。为什么不直接访问pod端口呢?之前了解到,pod一般不单独存在,通过deployment管理pod生命周期,在pod销毁重建后ip和hostname都会改变,所以一般不直接访问pod服务,通过service vip做代理将客户端请求转发到pod。

service的实现方式

kube-proxy

那service的请求转发是怎么实现的呢,通过kube-proxy组件实现。kube-proxy运行在每个node上,通过watch监听API Server 中service资源的create,update,delete事件,以获取新的Pod 和 vip映射关系,然后通过更新 iptables 规则来实现请求数据的转发,构建并维护各节点路由信息。

在k8s更新过程中,kube-proxy有三种实现模式:User space proxy mode,iptables proxy mode和IPVS proxy mode。

在详细了解kube-porxy前,先看下service的配置文件,这里面定义了转发涉及到的了3个port,对外的service port(port),中间转发的node port(nodePort)和提供服务的pod port(targetPort)。

# cat service-demo.yaml 
apiVersion: v1
kind: Service
metadata:
    name: mynginx
    namespace: default
spec: 
    selector:
      app: mynginx
    clusterIP: 10.10.98.98 # service ip
    type: NodePort # service 类型
    ports:
    - port: 80 # service端口
      targetPort: 8000 # pod端口
      nodePort: 30080 # node端口

用户空间代理模式(不推荐使用)

版本:k8s 1.1+

在这一版本,对于每个服务请求,kube-proxy的代理方式实现如下:

  • kube-proxy监听API Server 已添加和删除service和Endpoint对象,获取映射关系。
  • 在本地节点上打开一个随机端口(nodePort),访问该随机
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值