K8S容器编排之Headless浅谈

eureka 迁移 k8s 集群 Spring Cloud 强上云 系列之 eureka 迁移 故事前奏 前阵子忽然一个需求砸了过来,一忙就是两星期。写bug,挖坑忙的不亦乐乎。这几天军哥一直在群里一直大呼: 你们要输出,要有声音啊。正好今天刚搞完,也确实想放松一下,写篇小白文压压惊。 故事背景 这几年,云计算,容器 docker,微服务 很火,很显眼。当你初步了解这些东西,很多时候会眼前一亮。哇! 还能这么搞? ... 阅读详情

 

 

云爬虫技术研究笔记关注

0.7242018.12.26 23:02:10字数 687阅读 33,075

  前言: 最近在基于K8S开发平台的过程中遇到了有个问题没有弄懂,就是CoreDNS的作用,就好像在Docker Swarm里面,我们可以通过Service name来访问一组容器,在K8S里,我们想要通过name来访问服务的方式就是在Deployment上面添加一层Service,这样我们就可以通过Service name来访问服务了,那其中的原理就是和CoreDNS有关,它将Service name解析成Cluster IP,这样我们访问Cluster IP的时候就通过Cluster IP作负载均衡,把流量分布到各个POD上面。我想的问题是CoreDNS是否会直接解析POD的name,在Service的服务里,是不可以的,因为Service有Cluster IP,直接被CoreDNS解析了,那怎么才能让它解析POD呢,有大牛提出了可以使用Headless Service,所以我们就来探究一下什么是Headless Service。

  Headless Service也是一种Service,但不同的是会定义spec:clusterIP: None,也就是不需要Cluster IP的Service。
  我们首先想想Service的Cluster IP的工作原理:一个Service可能对应多个EndPoint(Pod),client访问的是Cluster IP,通过iptables规则转到Real Server,从而达到负载均衡的效果。具体操作如下所示:

kubectl get svc
NAME                      CLUSTER-IP       EXTERNAL-IP       PORT(S)           AGE
nginx-service             10.107.124.218   192.168.128.158   80/TCP,443/TCP    1d
kubectl describe  svc nginx-service    
Name:                   nginx-service
Namespace:              default
Labels:                 
Selector:               component=nginx
Type:                   ClusterIP
IP:                     10.107.124.218
External IPs:           192.168.128.158
Port:                   nginx-http      80/TCP
Endpoints:              10.244.2.9:80
Port:                   nginx-https     443/TCP
Endpoints:              10.244.2.9:443
Session Affinity:       None
No events.
nslookup nginx-service.default.svc.cluster.local  10.96.0.10
Server:         10.96.0.10
Address:        10.96.0.10#53

Name:   nginx-service.default.svc.cluster.local
Address: 10.107.124.218

  从上面的结果中我们可以看到虽然Service有2个endpoint,但是dns查询时只会返回Service的地址。具体client访问的是哪个Real Server,是由iptables来决定的。
  那么我们再来看看Headless Service的效果呢?

kubectl get service
NAME                      CLUSTER-IP       EXTERNAL-IP       PORT(S)    AGE
nginx                     None                         80/TCP     1h
kubectl describe  service nginx
Name:                   nginx
Namespace:              default
Labels:                 app=nginx
Selector:               app=nginx
Type:                   ClusterIP
IP:                     None
Port:                   web     80/TCP
Endpoints:              10.244.2.17:80,10.244.2.18:80
Session Affinity:       None
No events.
nslookup nginx.default.svc.cluster.local 10.96.0.10
Server:         10.96.0.10
Address:        10.96.0.10#53

Name:   nginx.default.svc.cluster.local
Address: 10.244.2.17
Name:   nginx.default.svc.cluster.local
Address: 10.244.2.18

  根据结果得知dns查询会如实的返回2个真实的endpoint。

  所以,顾名思义,Headless Service就是没头的Service。有什么使用场景呢?

  • 第一种:自主选择权,有时候client想自己来决定使用哪个Real Server,可以通过查询DNS来获取Real Server的信息。

  • 第二种:Headless Services还有一个用处(PS:也就是我们需要的那个特性)。Headless Service的对应的每一个Endpoints,即每一个Pod,都会有对应的DNS域名;这样Pod之间就可以互相访问。我们还是看上面的这个例子。

kubectl get statefulsets web
NAME      DESIRED   CURRENT   AGE
web       2         2         1h
kubectl get pods
web-0                       1/1       Running   0          1h
web-1                       1/1       Running   0          1h
nslookup nginx.default.svc.cluster.local 10.96.0.10
Server:         10.96.0.10
Address:        10.96.0.10#53

Name:   nginx.default.svc.cluster.local
Address: 10.244.2.17
Name:   nginx.default.svc.cluster.local
Address: 10.244.2.18

nslookup web-1.nginx.default.svc.cluster.local 10.96.0.10
Server:         10.96.0.10
Address:        10.96.0.10#53

Name:   web-1.nginx.default.svc.cluster.local
Address: 10.244.2.18

nslookup web-0.nginx.default.svc.cluster.local 10.96.0.10
Server:         10.96.0.10
Address:        10.96.0.10#53

Name:   web-0.nginx.default.svc.cluster.local
Address: 10.244.2.17

  如上,web为我们创建的StatefulSets,对应的pod的域名为web-0,web-1,他们之间可以互相访问,这样对于一些集群类型的应用就可以解决互相之间身份识别的问题了。

  完整示例:

apiVersion: v1
kind: Service
metadata:
  name: nginx
  labels:
    app: nginx
spec:
  ports:
  - port: 80
    name: web
  clusterIP: None
  selector:
    app: nginx
---
apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
  name: web
spec:
  serviceName: "nginx"
  replicas: 1
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.11
        ports:
        - containerPort: 80
          name: web
        volumeMounts:
        - name: www
          mountPath: /usr/share/nginx/html
      nodeSelector:
        node: kube-node3
      volumes:
        - name: www
          hostPath:
            path: /mydir
Zookeeper与Kubernetes集成:大数据容器编排协调 在云计算与大数据技术快速发展的今天,分布式系统的复杂度呈指数级增长。Kubernetes作为容器编排领域的事实标准,提供了强大的资源调度、服务发现和弹性扩展能力,但在面对需要强一致性协调的大数据组件(如Hadoop、Spark、Flink)时,仍需依赖专业的分布式协调工具。Zookeeper作为分布式系统的“操作系统”,擅长解决分布式环境下的同步、配置管理、领导选举等问题。如何在Kubernetes中高效部署和管理Zookeeper集群两者在服务发现与配置管理中的协同机制。 阅读详情

相关推荐

基于FPGA与红外成像的眼动追踪系统设计与实现(教学向)

本文详细介绍了基于FPGA与红外成像的眼动追踪系统设计与实现。通过红外摄像头采集图像,利用FPGA进行实时图像处理和红外瞳孔追踪,结合Verilog编程实现多目标检测与瞳孔定位。该系统适用于嵌入式视觉教学,展示了硬件搭建、算法优化及实时显示的完整流程。

g5h6i7j的博客 823

解析k8s中headless(无头服务)服务的作用

解析k8s中headless(无头服务)服务的作用 2.获取一个应用的headless服务 3. 获取服务对应的pod 4.通过nslookup 域名 dns服务器命令解析headless服务对应的ip地址 我们可以看到headless服务其实解析成pod的地址,而如果把域名精确到pod,例如 nac ...

Nucleusx的专栏 1万+

INCA基础教程

以软件自带Demo为例记录INCA学习过程,主要内容包括测量与标定。

yunqianrui的博客 6万+

k8s之StatefulSet绑定headlessService实现域名解析

k8s学习之StatefulSet实现域名解析简单demo

weixin_43896829的博客 2832

从踩坑到填平:我在RHEL7上给Tesla A100装驱动的完整记录(含Fabric Manager配置)

本文详细记录了在RHEL7系统上为Tesla A100安装Nvidia驱动的完整过程,包括Fabric Manager配置的关键步骤。通过分析A100架构的特殊性,提供了从驱动安装到服务配置的详细指南,并分享了常见问题的排查方法和性能调优技巧,帮助用户高效部署高性能GPU计算环境。

weixin_29291863的博客 284

高速PCB差分对布线仿真实战案例

差分对布线是高速PCB设计的关键环节,直接影响信号完整性与EMI性能。本文结合实际项目,详解等长控制、阻抗匹配、间距优化等核心技巧,并通过仿真工具验证眼图、串扰和时序裕量,助力工程师规避常见高速pcb设计陷阱。

weixin_29092787的博客 351

k8s实践(11) --服务发现CoreDNS和Kubernetes内部域名解析

参考: 官方网站,https://coredns.io/ CoreDNS安装,https://my.oschina.net/u/2306127/blog/1618543 CoreDNS使用手册,https://coredns.io/manual/toc/ CoreDNS源码,https://github.com/coredns CoreDNS配置,https://my.oschina.n...

黄规速博客:学如逆水行舟,不进则退 10000

安装oracle 19c 报错INS-06006 INS-44000 INS-32070

数据库版本oracle 19c 操作系统版本:centos7.8 安装oracle19c RAC 配置互信的时候setup显示成功,点test的时候报错INS-44000,继续点yes 报错INS-32070,继续往下点 报错INS-06006 处理过程 1.手动ssh node date 全部成功说明互信时没有问题的 2.查mos 文档ID 2555697.1 如果OpenSSH升级到8.x会有这个问题 MOS上的解决办法 #ssh -V OpenSSH_8.0p1, OpenSSL 1.0.2r 2

cqszpx的博客 1528

K8S 之 Headless 浅谈

Headless Services 简介 有时不需要或不想要负载均衡,以及单独的 Service IP。 遇到这种情况,可以通过指定 Cluster IP(spec.clusterIP)的值为 “None” 来创建 Headless Service。 您可以使用 headless Service 与其他服务发现机制进行接口,而不必与 Kubernetes 的实现捆绑在一起。 对这 headless...

qq_24794401的博客 8628

ican项目四汽车零件智能测量

ican项目四汽车零件智能测量

weixin_72050316的博客 562

摆脱英文束缚!群晖Transmission4.0.4全新中文界面攻略

在群晖安装完官方Transmission4.0.4套件后,界面是英文状态的,不太好用。但是按照网上分享的原来4.0以前版本的方法更新UI又失败,所以自己搞了下成功了,分享给需要的朋友。

XiaoqiangClub的博客 5223

Kubernetes Headless 服务详解

戳下方名片,关注并星标!回复“1024”获取2TB学习资源!????体系化学习:运维工程师打怪升级进阶之路 4.0— 特色专栏—MySQL/PostgreSQL/MongoDBElasticSearch/Hadoop/RedisKubernetes/Docker/DevOpsKafka/RabbitMQ/Zookeeper监控平台/应用与服务/集群管理N...

民工哥的博客 591

【SMPL简介】SMPL: A Skinned Multi-Person Linear Model【源码复现】

SMPL是一种3D人体建模方法.在数字人或者人物角色三维重建领域有着广泛应用支持人体的各种形状及动作可以简单理解为通过训练获取的人物模型SMPL 输入是:姿态shape vectorβ\betaβ+ 影响动作Pose的参数θ\thetaθ输出是: 各种变化后vertex顶点的数据作者:Loper, Matthew and Mahmood, Naureen and Romero, Javier and Pons-Moll, Gerard and Black, Michael J.

zik的博客 3369

Kubernetes - 边缘场景下的 K8s 集群部署与应用适配

- 用于边缘本地缓存-- 创建索引加速查询Kubernetes 不是“云端专属”的玩具,它正在成为边缘世界的“操作系统”。我们不再追求“把云搬过去”,而是学会“让边缘自己思考”。当你在树莓派上跑起一个 Java 微服务,它能在断网时自动缓存数据、本地告警、恢复后自动重传,那一刻,你不再是在部署一个容器 —— 你是在赋予一个设备“生命”。边缘的未来,不是“设备联网”,而是“设备自治”。而 Kubernetes,就是那把开启自治之门的钥匙。🎯边缘不是云的“缩小版”,

千淘万漉虽辛苦,吹尽狂沙始到金 5598

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

SmartDNS容器编排:Kubernetes StatefulSet部署指南

在Kubernetes集群中,DNS服务的稳定性与解析效率直接影响整个微服务架构的通信质量。传统DNS部署方案面临三大核心痛点:**解析延迟波动**(平均±30ms)、**缓存一致性难题**(跨节点缓存同步失效)、**扩缩容IP漂移**(导致上游DNS服务器连接重置)。SmartDNS作为高性能本地DNS服务器,通过多上游并发查询与智能IP优选技术,可将解析延迟降低至**5ms以内**,同时支持D...

gitblog_00135的博客 923

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

k8s Service之Headless Service

学亮编程手记 3325

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Docker Steam Headless高级部署:Kubernetes和TrueNAS Scale配置

Docker Steam Headless是一款支持NVIDIA GPU并可通过Web UI访问的无界面Steam Docker镜像,让游戏玩家能够在服务器环境中轻松部署和管理Steam游戏。本文将详细介绍如何在Kubernetes集群和TrueNAS Scale系统中实现高级部署,帮助你打造专业的游戏服务器解决方案。 [![Docker Steam Headless游戏服务器展示](https

gitblog_00027的博客 658

K8s实战:如何用StatefulSet和Headless Service搭建RocketMQ集群(避坑指南)

本文是一份在Kubernetes上构建高可用RocketMQ集群的深度实战指南。文章详细解析了如何利用StatefulSet管理有状态Pod的生命周期与持久化存储,并结合Headless Service提供稳定的网络发现,从而搭建坚如磐石的生产级消息集群。内容涵盖架构设计、关键配置、完整部署步骤以及监控与故障排查,旨在帮助读者避开常见陷阱,实现真正的云原生高可用部署。

weixin_29233333的博客 1003

k8s-statefulset

测试一下可以看到在sts命名空间下有三个pvc,这三个pvc就是对应的sts命名空间中的那三个pod可以看到我们删除了sts命名空间下的nginx-test这个statefulset这个控制器的资源后,对应的pvc也会被删除。

weixin_63294004的博客 1058

探索云原生技术之容器编排引擎-Kubernetes/K8S详解(7)

探索云原生技术之容器编排引擎-Kubernetes/K8S详解。Kubernetes是Google开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。在生产环境中部署一个应用程序时,通常要部署该应用的多个实例以便对应用请求进行负载均衡。....................................

Yyyy的博客 934

Kubernetes(k8s)学习笔记-先导版——一看就会

文章目录1、基本概念1.1、k8s1.2、概念2、网络通信3、资源清单3.1、资源3.2、资源清单3.3、 Pod的声明周期3.4、 资源控制器3.4.1、Deployment3.4.2、DaemonSet3.4.3、job3.4.4、CronJob3.4.5、Service3.4.5、Headless Service3.4.6、Ingress4、存储4.1、ConfigMap4.2、Secret4.3、 Volume存储卷4.3.1、EmptyDir4.3.2、HostDir4.3.3、NFS4.4、PV

可乐多点冰的博客 1777

Docker Headless VNC Container在Kubernetes和OpenShift中的部署实战

Docker Headless VNC Container是一个强大的开源项目,它提供了一系列带有无头VNC环境的Docker镜像,让用户能够在容器中运行图形化桌面环境并通过VNC协议访问。本文将详细介绍如何在Kubernetes和OpenShift这两种主流容器编排平台上部署和使用Docker Headless VNC Container,帮助新手用户快速上手这一实用工具。 ## 项目简介:什

gitblog_00596的博客 1087

Kubernetes容器编排实战:调度、网络、存储与监控四维攻坚

容器编排是云原生应用可靠交付的核心能力,其本质是通过声明式API协调计算、网络、存储与可观测性资源的动态协同。理解Kubernetes调度器的过滤-打分流水线、CNI插件与Service流量路径的七层穿透、StatefulSet与PVC的生命周期闭环、以及Prometheus指标采集链路的可信度验证,是保障有状态服务高可用的基础。这些技术原理直接支撑CI/CD流水线稳定性、故障自愈响应速度和资源调度效率,在中大型企业生产环境与职业技能竞赛中均构成关键能力门槛。本文聚焦容器云落地中最易踩坑的四大实战维度,结合

weixin_34174105的博客 408

容器编排技术 -- Kubernetes Service

容器编排技术 -- Kubernetes Service 1定义 Service 1.1没有 selector 的 Service 2VIP 和 Service 代理 2.1userspace 代理模式 2.2iptables 代理模式 3多端口 Service 4选择自己的 IP 地址 4.1为何不使用 round-robin DNS? 5...

YunWisdom 552

告别部署噩梦:StatefulSet与Headless Service掌控Kubernetes有状态应用

你是否还在为数据库、分布式系统等有状态应用的Kubernetes部署而头疼?Pod重启后IP变化导致服务不可用?数据持久化与恢复复杂难维护?本文将通过实际案例,详解如何使用StatefulSet(有状态集合)与Headless Service(无头服务)解决这些痛点,让你轻松掌控有状态应用部署。 ## 核心概念解析 ### StatefulSet:为有状态应用而生 StatefulSet是K...

gitblog_00628的博客 503

erichough/nfs-server容器编排指南:在Kubernetes和Docker Swarm中的部署

erichough/nfs-server是一款轻量级、健壮且灵活的容器化NFS服务器,支持NFS 3和4版本,非常适合在容器编排平台中部署使用。本文将详细介绍如何在Kubernetes和Docker Swarm环境中快速部署和配置这个强大的NFS服务器容器。 ## 为什么选择erichough/nfs-server? erichough/nfs-server容器提供了传统NFS服务器的所有功能

gitblog_00709的博客 430
上一篇: K8S 之 Headless 浅谈
下一篇: Mysql实现级联操作(级联更新、级联删除)
王树民
博客等级 码龄10年 912粉丝 560原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值