首页 > 其他分享 >几句话理解Kubetnetes中的Service资源的几种类型

几句话理解Kubetnetes中的Service资源的几种类型

时间:2024-06-12 12:29:00浏览次数:17  
标签:LB Service 几句话 集群 NodePort Kubetnetes Pod 节点

Kubetnetes中的Service有4种类型,ClusterIP、NodePort、LB、HandlessService.

一、首先理解为什么需要Service?

        1、因为Kubetnetes认为Pod这个资源并不是一个持久资源,说白了就是认为Pod不在挂就是在挂的路上。那么就需要一个资源来配套Deployment或者Statfull set来保证集群内部流量访问有一个持久下且静态的IP地址和端口让服务之间不停摆。

        2、且因为副本机制的存在,创建多副本的Pod以及实际需要访问服务的Pod不一定在同一个worker节点上,需要一个LB的机制。

二、Cluster IP

        特点:

                1、只能集群东西流量访问。

                2、配置的Service会生成一个独立的ClusterIP,静态且持久、不删除Service不变。

                3、集群内部唯一。

                4、会在CoreDNS中自动生成一条DNS记录,默认为:<hostname>.<service-name>.<namespace>.svc.cluster.local 对应ClusterIP.

                5、会占用每个集群节点上的端口.

                6、会根据Label Seletct 自动生成服务端点 EndPoint.

三、NodePort

        特点:运行集群外部访问Pod的服务,跑南北流量。

                1、也会生成集群唯一的ClusterIP.

                2、也会生成DNS记录。

                3、会在节点端口上做映射,将NodePort (30000-32767)范围内某一个映射到Service的端口上。

                4、访问集群内部任意节点的NodePort端口就可以通过Service的Endpoint到达Pod.

                5、一般做测试使用,不应用到生存环境。 

四、 LB

        特点:只能由云提供商提供,比如Google Cloud、AWS等。

                1、就是NodePort类型的扩展。

                2、因为NodePort是Client直接访问集群节点端口,这么做直接暴露了集群节点的IP地址,安全问题太大。

                3、所以在NodePort类型前面加了一个前置机就是云提供商的LB。

                4、一个LB类型的Service对应一个云提供商的LB。

                5、扩展要钱!!

五、HandlessService.

        先说为什么存在HandlessService?

                1、因为有状态应用(数据库,大型负责系统ELK)等存在选举,主备同步机制。

                2、这类有状态应用并不需要通过一层Service的LB来帮助我负载节点,我只需要知道我的Master和Slave在哪里就可以。

                3、如果用Cluster IP,例如像Mysql的集群一个节点是主一个是备,正常情况就是主干活,你后端服务发生的请求如果通过Cluster IP LB到备,就很尴尬,需要一个唯一的标识符来告诉后端的POD那个一个主那个是备。

       特点:

                1、HandlessService就是给Statefull set用的。

                2、因为Statefull set的Pod有pod-1,pod-2的唯一标识符。

                3、他没有Cluster IP ,他只需要和实际的Pod沟通,但因为Pod的IP地址老变,所以如果是有状态集群的配置,例如Mysql集群指定Master会直接这么写:master-host = mysql-cluster-0.mysql-cluster.default.svc.cluster.local 直接告诉Slave节点主节点在哪里,并且后端程序的配置文件也可以直接写mysql-cluster-0.mysql-cluster.default.svc.cluster.local告诉后端程序Mysql主的地址。

                4、当然,如果你的DB是分布式且支持双活的,那就是DB集群内部使用handless Service来镜像选举和同步,后端程序访问DB Service使用Cluster IP 的Service 来负载。

                

        

标签:LB,Service,几句话,集群,NodePort,Kubetnetes,Pod,节点
From: https://blog.csdn.net/weixin_46510209/article/details/139622678

相关文章

  • VS2022 WinFrom調用WebService
    調用方法: 引用方法在.net6.0中调用远程服务器web服务,Webservices(xxx.asmx),RESTful风格,2种解决方案。_.net_Tanjia_kiki-上海城市开发者社区(csdn.net).NET6VS2022连接WebService生成代理客户端代码_vs2022中wcf-CSDN博客......
  • C#、.Net通过HttpWebRequest请求WebService接口
    点击查看代码///<summary>///测试按钮中调用WebService接口///</summary>///<paramname="sender"></param>///<paramname="e"></param>privatevoidbutton1_Click(objectsender,EventArgse){//strin......
  • 谁说.net core不好动态访问webservice?看这篇文章,C#快速实现动态访问webservice,兼容.ne
    前言:访问webservice,大多数人都是用服务引用的方式,但是这种方式比较麻烦,例如遇到服务更新了,你还需要手动更新你的服务引用,再重新发布,很麻烦。或者已有的一些例子,至少我看到的很多案例,动态访问也只能止步于使用.netframework环境,没看到有啥.netcore上面动态访问的案例。于是我就来......
  • 解决Docker遇到error NU1301: Unable to load the service index for source https://
    解决Docker容器内无法通过HTTPS访问外部网络的问题在使用Docker构建.NET项目时,有时会遇到无法通过HTTPS访问外部网络的问题,导致dotnetrestore命令无法从NuGet源下载依赖项。本文将介绍一种通过修改Docker配置文件config.json来解决该问题的方法。问题描述在......
  • webservice、WCF、webAPI、MVC权限认证
    webservice权限认证》》soapHeaderSOAPHeader案例服务引用下生成的服务方法参数中会自动加入一个soapHeader的参数,WEB服务引用则没有,我感觉采用WEB服务引用基于这种验证比较方便,因为只需将soapHeader实例赋值一次就可以多次调用不同的服务方法。Asp.NET认证在as......
  • 【Azure Service Bus】Service Bus SDK 抛出 ERROR c.a.c.a.i.ActiveClientTokenManag
    问题描述使用AzureServiceBusSDK,从生产端发送消息进入ServiceBus中,频繁遇见如下错误,不知消息是否有成功发送到ServiceBus中。发送代码publicvoidsendMessage(Stringmsg){//createaServiceBusSenderclientforthetopic//sendoneme......
  • 详解 Protobuf 在 C++ 下 Message、enum、Service 的使用
    这篇文章主要目的是介绍Protobuf的常用知识,包括前置声明,message,service,enum等。声明//使用proto3语法syntax="proto3";//定义一个名为Greeter的包packageGreeter;//开启生成通用服务代码的选项optioncc_generic_services=true;syntax用于提示pro......
  • 【VMware vSphere】安装配置Update Manager Download Service(UMDS)作为 vLCM 的下载存
    VMwarevSphereUpdateManagerDownloadService(UMDS)是vSphereLifecycleManager(vLCM)的可选模块。我在之前文章中提到这个功能,当vSphere环境能够连接Internet时,我们可以使用vLCM的在线Internet下载源获取修补程序,当vSphere环境不能连接Internet时,您可以在您的......
  • 使用 jar 方式,快速运行 minecraft-service
    在Linux系统中,要将命令封装成.service文件,需要创建一个systemd服务单元文件。下面是创建一个名为minecraft.service​的示例,它会运行你提供的java​命令来启动MinecraftSpigot服务器。打开终端。使用文本编辑器创建一个新的.service文件。你可以使用nano​或者vi​。例如:s......
  • XML-RPC实现WebService简单PHP程序示例 及 Closure闭包中的bind与bindTo方法的区别
    一、XML-RPC实现WebService简单PHP程序示例    WebService就是为了异构系统的通信而产生的,它基本的思想就是使用基于XML的HTTP的远程调用提供一种标准的机制,而省去建立一种新协议的需求。目前进行WebService通信有两种协议标准,一种是XML-RPC,另外一种是SOAP。XML-RPC比较......