k8s之service五种负载均衡byte的区别

这篇具有很好参考价值的文章主要介绍了k8s之service五种负载均衡byte的区别。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1,什么是Service?

1.1 Service的概念​

k8s中,service 是一个固定接入层,客户端可以通过访问 service 的 ip 和端口访问到 service 关联的后端pod,这个 service 工作依赖于在 kubernetes 集群之上部署的一个附件,就是kubernetes 的 dns 服务(不同 kubernetes 版本的 dns 默认使用的也是不一样的,1.11 之前的版本使用的是 kubeDNs,较新的版本使用的是 coredns),service 的名称解析是依赖于 dns 附件的,因此在部署完 k8s 之后需要再部署 dns附件,kubernetes 要想给客户端提供网络功能,需要依赖第三方的网络插件(flannel,calico 等)。每个 K8s 节点上都有一个组件叫做 kube-proxy,kube-proxy 这个组件将始终监视着 apiserver 中有关service 资源的变动信息,需要跟 master 之上的 apiserver 交互,随时连接到 apiserver 上获取任何一个与 service 资源相关的资源变动状态,这种是通过 kubernetes 中固有的一种请求方法 watch(监视)来实现的,一旦有 service 资源的内容发生变动(如创建,删除),kube-proxy 都会将它转化成当前节点之上的能够实现 service 资源调度,把我们请求调度到后端特定的 pod 资源之上的规则,这个规则可能是 iptables,也可能是 ipvs,取决于 service 的实现方式。

1.2 service的作用

  • ① 服务发现。 service通过label selector 选择提供服务的pod。此label selector
    其实就是转换规则,会通过它生成service的endpoints。endpoint是k8s中的资源对象,存储在etcd中,可以由service定义中的selector生成,它记录了一条serviceIP对应的所有podIP。当请求到达serviceIP时,会根据分发策略从所有的podIP中选择一个podIP,作为提供服务的pod。当pod被删除或者重建时,podIP会发生变化,kube-proxy会基于监听机制发现对应的变化并实时更新endpoints中的serviceIP对应的podIP。因此,service具有服务发现的功能,当pod更新时,service会根据label
    selector找到对应的pod,并将podIP记录更新到service的endpoint中。这样,无论pod怎样更新变化,service都能找到pod并使用其提供的服务。
  • ② 负载均衡。 service往往通过label- selector代表着一组pod。当请求到达service时,该请求会根据负载均衡策略将请求定向到对应的pod上。在此过程,除非特别设置,否则请求会被分配到各个pod上,避免集中将请求发送给某个pod上导致服务被打挂的现象。

2、五种负载均衡类型及区别

Service 对象的一般示例:

apiVersion: v1
kind: Service
metadata:
  name: my-web-service
spec:
  type: LoadBalancer  
  ports:
    - port: 80
      targetPort: 8080   # 这是你的应用程序容器监听的端口
  selector:
    app: my-web-app     # 这里需要指定与你的应用程序 Pod 匹配的标签

其中type的四中类型和使用区别:
k8s之service五种负载均衡byte的区别,负载均衡,云原生,k8s,service

参考:

1、【Kubernetes Service NodePort 外网访问、LoadBalancer

来自 https://blog.csdn.net/qq_34556414/article/details/108976004 】

2、CoreDNS: DNS and Service Discovery

来自 https://coredns.io/
3、Kubernetes的ExternalName详解

来自 https://developer.aliyun.com/article/1320417
4、Kubernetes LoadBalancer使用场景例子及配置步骤

来自 https://developer.aliyun.com/article/1309651?spm=a2c6h.14164896.0.0.191647c5P9XDDO&scm=20140722.S_community@@文章@@1309651._.ID_1309651-RL_loadbalancer-LOC_search~UND~community~UND~item-OR_ser-V_3-P0_3
5、K8s之service

来自 https://zhuanlan.zhihu.com/p/568436695文章来源地址https://www.toymoban.com/news/detail-745050.html

到了这里,关于k8s之service五种负载均衡byte的区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • K8S之ipvs负载均衡原理

    IPVS简介: 尽管 Kubernetes 在版本v1.6中已经支持5000个节点,但使用 iptables 的 kube-proxy 实 际上是将集群扩展到5000个节点的瓶颈。 在5000节点集群中使用 NodePort 服务,如 果有2000个服务并且每个服务有10个 pod,这将在每个工作节点上至少产生20000个 iptable 记录,这可能使内核非常

    2024年02月11日
    浏览(24)
  • K8s 部署 CNI 网络组件+k8s 多master集群部署+负载均衡

    ------------------------------ 部署 CNI 网络组件 ------------------------------ ---------- 部署 flannel ---------- K8S 中 Pod 网络通信: ●Pod 内容器与容器之间的通信 在同一个 Pod 内的容器(Pod 内的容器是不会跨宿主机的)共享同一个网络命名空间,相当于它们在同一台机器上一样,可以用 lo

    2024年02月08日
    浏览(37)
  • 千云物流 - 使用k8s负载均衡openelb

    具体根据官方文档进行安装官方文档,这里作为测试环境的安装使用. OpenELB 是一个开源的云原生负载均衡器实现,可以在基于裸金属服务器、边缘以及虚拟化的 Kubernetes 环境中使用 LoadBalancer 类型的 Service 对外暴露服务。OpenELB 项目最初由 KubeSphere 社区 发起,目前已作为 CNCF

    2024年02月04日
    浏览(28)
  • K8s:部署 CNI 网络组件+k8s 多master集群部署+负载均衡及Dashboard k8s仪表盘图像化展示

    目录 1 部署 CNI 网络组件 1.1 部署 flannel 1.2 部署 Calico 1.3 部署 CoreDNS 2 负载均衡部署 3 部署 Dashboard K8S 中 Pod 网络通信: ●Pod 内容器与容器之间的通信 在同一个 Pod 内的容器(Pod 内的容器是不会跨宿主机的)共享同一个网络命令空间,相当于它们在同一台机器上一样,可以用

    2024年02月05日
    浏览(37)
  • 【Spring Cloud Kubernetes】使用k8s原生service实现服务注册和发现

    @TOC 现在微服务开发模式应用的越来越广泛,注册中心 Eureka 也逐渐被其它注册中心产品替代,比如阿里出品的 Nacos 。随着云原生相关技术的普及, k8s 迅猛发展,我们把 K8s 中的 Pod 暴露给外部访问,通过少了 Service ,这也是今天的主角。 有没有发现,其实 Service 已经解决了

    2024年02月12日
    浏览(39)
  • 云原生-k8s核心概念(pod,deploy,service,ingress,configmap,volume)

    Gitee-k8s学习 云原生实战-kubernetes核心实战 Namespace是kubernetes系统中的一种非常重要资源,它的主要作用是用来实现多套环境的资源隔离或者多租户的资源隔离 Pod可以认为是容器的封装,一个Pod中可以存在一个或者多个容器。 kubernetes很少直接控制Pod,一般都是通过Pod控制器来

    2024年02月03日
    浏览(48)
  • 基于grpc-java开发的普通工程在k8s内部署多实例,如何实现客户端流量的负载均衡

    本文主要讨论通过grpc-java开发的普通的java grpc工程,以多实例的方式部署在容器编排平台kubernetes(以下简称k8s)上,如何能够实现让同样部署在k8s 集群内的客户端请求流量均衡的分发到多个grpc应用部署实例上去。 grpc服务端程序在k8s内部署的多个实例通过headless service暴露服

    2024年01月17日
    浏览(37)
  • 云原生 黑马Kubernetes教程(K8S教程)笔记——第一章 kubernetes介绍——Master集群控制节点、Node工作负载节点、Pod控制单元

    参考文章:kubernetes介绍 本章节主要介绍应用程序在服务器上部署方式演变以及kubernetes的概念、组件和工作原理。 在部署应用程序的方式上,主要经历了三个时代: 传统部署:互联网早期,会直接将应用程序部署在物理机上 优点:简单,不需要其它技术的参与 缺点:不能为

    2024年02月04日
    浏览(40)
  • k8s service

    程序在容器中、容器在Pod中,可以通过pod的ip来访问应用程序,但是podIP会随着创建销毁而改变。由此,Service出现: Service会对提供同一个服务的 多个pod进行聚合 ,并且提供一个统一的入口地址。通过访问Service的入口地址就能访问到后面的pod服务。 在整个Service的生命周期中

    2024年02月13日
    浏览(30)
  • K8S--service

    Service 是将集群中的 一个或一组 Pod应用程序公开为网络服务的方法。我们都知道pod是不稳定的,有可能时时刻刻都在创建和销毁,这一时刻运行的 Pod 集合可能不同于下一刻运行该应用的 Pod 集合,并且新创建的pod的ip地址会改变,所以我们不应该寄期望于pod的稳定性和可靠性

    2024年01月19日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包