K8S Headless 与 ClusterIP的区别

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

在Kubernetes中,Headless Service和ClusterIP Service都是Service资源的类型,它们都用于为应用程序提供服务发现和负载均衡等功能。下面是Headless Service和ClusterIP Service的区别:

一、Headless Service

Headless Service是一种不使用ClusterIP的Service类型,它会将应用程序的访问请求直接转发到后端Pod上,而不进行任何负载均衡或者服务代理的处理。每个Pod都有一个唯一的DNS记录,因此可以通过这些DNS记录来实现对Pod的直接访问和控制。

Headless Service通常用于需要访问单个Pod的应用程序场景,例如:数据库或者StatefulSet部署的有状态应用程序。由于没有ClusterIP,因此这种Service类型无法提供负载均衡的功能,但可以通过DNS轮询或者客户端层面的负载均衡来实现流量分发。

1、Headless访问方式

在Kubernetes中,使用Headless Service访问Pod有两种方式:DNS解析和直接IP访问。

DNS解析

当创建一个Headless Service时,Kubernetes会为每个后端Pod创建一个对应的DNS A记录,使得可以直接通过Pod的名称进行访问。例如:如果有一个名为my-service的Headless Service,并且后端有三个Pod(pod-0、pod-1和pod-2),则可以通过以下方式来访问这些Pod:

$ nslookup pod-0.my-service
$ nslookup pod-1.my-service
$ nslookup pod-2.my-service

这将会返回每个Pod的IP地址,然后可以通过这些IP地址进行直接访问。

 

直接IP访问

另外一种访问Headless Service的方法是直接使用Pod的IP地址进行访问,而不通过DNS解析。这种方法通常用于需要直接控制或者限制Pod访问的场景,例如:在数据复制或者迁移过程中。

2、Headless使用规则

在使用Headless Service时,需要注意以下规则:

  • Headless Service必须定义selector字段以指定其所附着的后端Pod;
  • 每个后端Pod的名称必须唯一,并且不能与其他Pod的名称重复;
  • Headless Service没有ClusterIP,因此无法提供负载均衡和服务代理等功能,需要通过客户端层面的负载均衡或者DNS轮询等方式实现流量分发;
  • 当后端Pod变化时,Headless Service可以自动更新DNS记录,以确保访问的准确性和可靠性。

综上所述,Headless Service是一种用于访问Kubernetes Pod的Service类型,通常用于需要对单个Pod进行直接控制或者访问的场景,例如:数据库或者StatefulSet等有状态应用程序。

3、Headless Service创建格式

apiVersion: v1  
kind: Service  
metadata:  
  name: my-headless-service  
spec:  
  clusterIP: None  
  selector:  
    app: my-headless-app  
  ports:  
    - name: http  
      protocol: TCP  
      port: 80  
      targetPort: 9376

对于指定了 clusterIP=None 的 Headless Service 来说,它的 DNS 记录的格式一般为:…svc.cluster.local具体来说,对于一个名为 my-headless-service 的 Headless Service 来说,它的 DNS 记录就是 my-headless-service.svc.cluster.local

当你访问这个 DNS 记录时,它会返回所有被代理的 Pod 的 IP 地址的集合。如果你的客户端无法解析这个集合,那么它可能只会拿到第一个 Pod 的 IP 地址。

此外,Headless Service 代理的 Pod DNS 记录的格式是:…svc.cluster.local(例如:myPodName.myServiceName.myNameSpace.svc.cluster.local)。这条记录也指向 Pod 的 IP 地址。

以上信息仅供参考,可以咨询专业的技术人士获取准确的信息。

二、ClusterIP Service

ClusterIP Service是Kubernetes默认的Service类型,它会为后端Pod创建一个虚拟IP地址(ClusterIP),并通过kube-proxy组件实现负载均衡和服务代理的功能。当客户端发送请求时,ClusterIP会将请求转发给后端Pod上的某个节点,从而实现流量分发和负载均衡等功能。

ClusterIP Service通常用于无状态应用程序的负载均衡场景,例如Web服务器、API服务器或者前端应用程序等。它可以通过Service关联的Endpoint对象来绑定后端Pod的IP地址和端口号,以实现对Pod的自动发现和管理。

综上所述,Headless Service和ClusterIP Service都是Kubernetes中的重要Service类型,但主要针对不同的应用程序场景,可以根据具体需求选择合适的Service类型来实现服务发现和负载均衡等功能。文章来源地址https://www.toymoban.com/news/detail-468085.html

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

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

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

相关文章

  • ClusterIP in K8s

    ClusterIP is a type of Service in Kubernetes that is designed to provide internal network connectivity to a group of pods. The main purpose of ClusterIP is to create a stable, virtual IP address that represents a set of pods and allows other components within the cluster to access them. ClusterIP works by creating a virtual IP address for the Service, which

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

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

    2024年02月12日
    浏览(41)
  • 【Kubernetes】第二十二篇 - k8s 部署 MySQL 服务(secret、deployment、service)

    上一篇,介绍基于 k8s 项目部署流程设计; 本篇,介绍 MySQL 服务的部署; 部署 MySQL 可以为指定 node 添加污点,专门用于 mysql 部署(当前只有一个节点,不考虑); 为了保证mysql容器重启时数据不会丢失:创建 mysql 数据目录,用于存储 mysql 数据,实现 MySQL 数据的持久化;

    2024年02月03日
    浏览(50)
  • k8s之service五种负载均衡byte的区别

    在 k8s 中, service 是一个固定接入层,客户端可以通过访问 service 的 ip 和端口访问到 service 关联的后端pod,这个 service 工作依赖于在 kubernetes 集群之上部署的一个附件,就是kubernetes 的 dns 服务 (不同 kubernetes 版本的 dns 默认使用的也是不一样的,1.11 之前的版本使用的是 ku

    2024年02月05日
    浏览(38)
  • k8s 中的无头服务 (Headless Services)

            有时候我们不需要负载均衡,以及单独的 Service IP。 遇到这种情况,可以通过指定 Cluster IP(spec.clusterIP)的值为 \\\"None\\\" 来创建无头服务。通过无头服务的标签选择器(Label Selector)可以将后端的 Pod 列表返回给调用的客户端。         对于无头服务,不会为其分

    2024年02月15日
    浏览(34)
  • Kubernetes 启动Pod的方法-Pod的调度算法-Pod间的通信-k8s的控制器-Pod资源控制-发布Service服务

    目录 Pod 参考文档:Pod | Kubernetes Pod配置文件:simple-pod.yaml 对master进行如下操作 Pod的状态有: 参考文档:(70条消息) Pod生命周期中的状态解释_pod状态_闹玩儿扣眼珠子的博客-CSDN博客 进入Pod内的nginx容器: 当我们创建一个Pod,其中的步骤是什么?(启动Pob的流程) 大概步骤:

    2024年02月13日
    浏览(55)
  • 【Chrome】使用k8s、docker部署无头浏览器Headless,Java调用示例

    无头浏览器是一种没有图形用户界面的浏览器。无头浏览器不通过其图形用户界面( GUI )控制浏览器的操作,而是使用命令行。 Chrome Headless 用于抓取(谷歌)、测试(开发者)和黑客(黑客)。 搜索引擎,使用它来呈现页面、生成动态内容和索引来自单页 Web 应用程序的数据。 SEO 工

    2024年02月08日
    浏览(39)
  • K8S--service

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

    2024年01月19日
    浏览(43)
  • k8s service

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

    2024年02月13日
    浏览(32)
  • k8s service (三)

    K8s service (三) LoadBalancer类型的Service LoadBalancer和NodePort其实是同一种方式,目的都是向外暴露一个端口,区别在于LoadBalancer会在集群的外部再来做一个负载均衡设备,而这个设备需要外部环境支持的,外部服务发送到这个设备上的请求,会被设备负载之后转发到集群中     E

    2024年02月11日
    浏览(27)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包