roundrobin来历_浅谈 kubernetes service 那些事(上篇)

本文深入探讨了Kubernetes Service的工作原理,包括Service的定义、类型、负载分发策略(如RoundRobin)和服务发现机制,强调了kube-proxy在负载均衡中的角色及其iptables实现。此外,还讨论了大规模集群中iptables的性能问题及潜在解决方案。
摘要由CSDN通过智能技术生成

欢迎访问网易云社区,了解更多网易技术产品运营经验。

一、问题

首先,我们思考这样一个问题:

访问k8s集群中的pod, 客户端需要知道pod地址,需要感知pod的状态。那如何获取各个pod的地址?若某一node上的pod故障,客户端如何感知?

二、k8s service

什么是service

是发现后端pod服务;

是为一组具有相同功能的容器应用提供一个统一的入口地址;

是将请求进行负载分发到后端的各个容器应用上的控制器。

对service的访问来源

访问service的请求来源有两种:k8s集群内部的程序(Pod)和 k8s集群外部的程序。

service类型

采用微服务架构时,作为服务所有者,除了实现业务逻辑以外,还需要考虑如何把服务发布到k8s集群或者集群外部,使这些服务能够被k8s集群内的应用、其他k8s集群的应用以及外部应用使用。因此k8s提供了灵活的服务发布方式,用户可以通过ServiceType来指定如何来发布服务,类型有以下几种:

● ClusterIP:提供一个集群内部的虚拟IP以供Pod访问(service默认类型)。service 定义如下:

service 结构如下:

● NodePort:在每个Node上打开一个端口以供外部访问

Kubernetes将会在每个Node上打开一个端口并且每个Node的端口都是一样的,通过\:NodePort的方式Kubernetes集群外部的程序可以访问Service。service 定义如下:

● LoadBalancer:通过外部的负载均衡器来访问

service selector

service通过selector和pod建立关联。

k8s会根据service关联到pod的podIP信息组合成一个endpoint。

若service定义中没有selector字段,service被创建时,endpoint controller不会自动创建endpoint。

service负载分发策略

service 负载分发策略有两种:RoundRobin:轮询模式,即轮询将请求转发到后端的各个pod上(默认模式);

SessionAffinity:基于客户端IP地址进行会话保持的模式,第一次客户端访问后端某个pod,之后的请求都转发到这个pod上。

三、服务发现

k8s服务发现方式

虽然Service解决了Pod的服务发现问题,但不提前知道Service的IP,怎么发现service服务呢?

k8s提供了两种方式进行服务发现:

● 环境变量: 当创建一个Pod的时候

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值