Kubernetes DNS Service技术研究

Kubernetes K8S之Service服务详解与示例 K8S之Service概述与代理说明,并详解所有的service服务类型与示例 阅读详情

本文主要是对kubernetes 1.2和1.3的DNS Service的内部实现分别进行研究,得出其内部实现框架和交互逻辑,并对它们的实现进行了比较。

Kubernetes 1.2 DNS Service

部署

kubernetes 1.2中DNS Server的部署请参考:https://xuxinkun.github.io/2016/07/22/kubernetes-dns/

内部架构及技术细节

画图画的好累,不想写太多字了,其实想说的都在图里。

这里写图片描述
说明:

  • 线路1:kubernetes cluster中的DNS请求被SkyDNS接受,SkyDNS配置了Backend为etcd/cluster,从etcd/cluster中读取数据,然后封装数据返回完成DNS query请求。
  • Kube2Sky通过watch kube-api-server对service & endpoint的数据来进行更新etcd中/v2/key/skydns/…中的数据。

Kubernetes 1.3 DNS Service

部署

kubernetes 1.3中DNS Server的部署请参考:http://tonybai.com/2016/10/23/install-dns-addon-for-k8s/

内部架构及技术细节

这里写图片描述

在kubernetes 1.3中,KubeDNS容器把在1.2中分开部署的SkyDNS和Kube2Sky整合在程序kube-dns中,在容器KubeDNS中部署,其启动流程如下:

  1. Starting SkyDNS server. Listening on port:10053.
  2. skydns: metrics enabled on :/metrics.
  3. Setting up Healthz Handler(/readiness, /cache) on port :8081.
  4. watch kuber-api-server for service & endpoint & pod.
  5. initialize in-memory lookup structures to service DNS requests.

说明:

  • 线路1:kubernetes cluster中的DNS请求被dnsmasq接受,dnsmasq默认配置了一个1G大小的cache,以提高性能。如果dnsmasq cache中有记录命中,则直接有dnsmasq返回。
  • 线路2:若dnsmasq cache中无记录命中,则forward请求到KubeDNS容器中的SkyDNS Server处理,SkyDNS从KubeDNS维护的一块内存(cache)中查找数据并进行响应。这个cache是由类似1.2中的Kube2Sky中的模块通过watch kube-api-server对service & endpoint的数据来进行更新维护。

总结

对比1.2和1.3中的实现,主要区别在:

  • 1.2中SkyDNS和Kube2Sky分别部署在两个不同的容器中,直接由SkyDNS接受kubernetes cluster中的DNS请求;
  • 1.3中将SkyDNS和Kube2Sky整合到了一个程序中KubeDNS;
  • 1.3中引入了dnsmasq容器,由它接受kubernetes cluster中的DNS请求,目的就是利用dnsmasq的cache模块,提高性能;

kube-dns分析: https://blog.youkuaiyun.com/ismr_m/article/details/52960205

k8s实践(12)--K8s service服务详解_kubernetes 中的service支持什么协议 希望在生产环境中使用外部的数据库集群,但测试环境使用自己的数据库。希望服务指向另一个Namespace中或其它集群中的服务。正在将工作负载转移到 Kubernetes 集群,和运行在 Kubernetes 集群之外的 backend。metadata:spec:ports:port: 80由于这个 Service 没有 selector,就不会创建相关的 Endpoints 对象。 阅读详情

相关推荐

【云原生K8S】Kubernetes之Service

K8S的Service配置(ClusterIP、NodePort)

m0_71518373的博客 1953

优化DNS SRV记录

DNS的SRV记录,用于客户端来定位服务器,请求LDAP服务,请求kerberos服务。再加上站点的概念,那么事情就变得更加美好了。客户端总是去请求本站点内的DC服务器,加快登录速度,人人都满意,于是IT运行起来也顺畅了。但是以下的情况,事情就可能变得复杂起来了: 1、客户端在加入域时,他并不知道自己处于什么站点,本来处在A站,最理想的也是找A站点的服务器做加域操作,但事实会这样嘛; 2、如果...

weixin_33709364的博客 505

k8s集群service管理

集群service管理包括: 网络代理模式 服务代理 服务发现 发布服务 概述 Service 是对一组提供相同功能的 Pods 的抽象,并为它们提供一个统一的入口。 借助 Service,应用可以方便的实现服务发现与负载均衡,并实现应用的零宕机升级。 Service 通过标签来选取服务后端,一般配合 Replication Controller 或者 Deployment ...

lyzkks的博客 1万+

k8s服务发现之第四弹Service 与 Pod 的 DNS

Kubernetes 为 Service 和 Pod 创建 DNS 记录。你可以使用一致的 DNS 名称而非 IP 地址访问 Service。Kubernetes 发布有关 Pod 和 Service 的信息,这些信息被用来对 DNS 进行编程。Kubelet 配置 Pod 的 DNS,以便运行中的容器可以通过名称而不是 IP 来查找服务。集群中定义的 Service 被赋予 DNS 名称。默认情况下,客户端 Pod 的 DNS 搜索列表会包含 Pod 自身的名字空间和集群的默认域。

linus.lin的博客 1012

k8s-service及域名访问

如果某个service属于不同的namespace,那么在进行service查找时,需要补充该namespace的名称(service_name.namespace),组合成完整的域名,否则会查找失败。service可以实现“pod的发现和副本间负载均衡”,但访问service也需要ip和端口号,因此又引出了service的发现的问题。在服务后面的pod可能删除重建,它们的地址可能改变,数量也可能增减,但是始终可以通过服务的单一不变地址访问到这些pod。1、Pod是短暂的,他们随时会启动或者关闭。

查士丁尼绵_的博客 4725

【K8S问题系列 | 2】Kubernetes 中 Pod 无法通过 Service 名称访问服务的 DNS 解析失败【已解决】

在 Kubernetes 中,Service 提供了一种稳定的方式,通过名称访问一组 Pod。当其他 Pod 无法通过 Service 名称访问服务,并且出现 DNS 解析失败时,通常会导致应用无法正常工作。本文将详细分析此问题的常见原因及其解决方案。

颜淡慕潇 1万+

kubernetes DNS服务详细介绍

微信公众号搜索 DevOps和k8s全栈技术 ,关注之后,在后台回复 k8s视频,就可获取k8s免费视频和文档,也可扫描文章最后的二维码关注公众号。自定义DNS服务下面介绍了如何配置DN...

weixin_38320674的博客 1561

【K8S系列】Kubernetes 中 Pod 无法通过 Service 名称访问服务的 DNS 解析失败问题【已解决】

在 Kubernetes 中,Service 提供了一种稳定的方式,通过名称访问一组 Pod。当其他 Pod 无法通过 Service 名称访问服务,并且出现 DNS 解析失败时,通常会导致应用无法正常工作。本文将详细分析此问题的常见原因及其解决方案。

颜淡慕潇 1万+

Kubernetes DNS服务简介

介绍 域名系统(DNS)是一种用于将各种类型的信息(例如IP地址)与易于记忆的名称相关联的系统。 默认情况下,大多数Kubernetes群集会自动配置内部DNS服务,以便为服务发现提供轻量级机制。 内置的服务发现使应用程序更容易在Kubernetes集群上相互查找和通信,即使在节点之间创建,删除和移动Pod和服务时也是如此。 最近版本的Kubernet...

weixin_33971130的博客 407

云原生(二十) | Kubernetes篇】深入了解Kubernetes(k8s)Service

Service 创建完成后,会对应一组EndPoint。可以kubectl get ep 进行查看 type有四种,每种对应不同服务发现机制 Servvice可以利用Pod的就绪探针机制,只负载就绪了的Pod。自动剔除没有就绪的Pod 原理:kube-proxy 在负责这个事情 手动指定的ClusterIP必须在合法范围内 None会创建出没有ClusterIP的headless service(无头服务),Pod需要用服务的域名访问

Lansonli(蓝深李)的博客 1603

【Diffusion分割】医学图像分割中去噪扩散技术

扩散模型(DPM)在图像生成方面表现出了卓越的性能,其性能往往优于其他生成模型。自其问世以来,强大的噪声-图像去噪管道已被扩展到各种判别任务中,包括图像分割。在医学成像中,图像往往是大型三维扫描图像,由于内存消耗大、迭代采样过程耗时,使用 DPM 对一幅图像进行分割的效率极低。在这项工作中,我们提出了一种(LDSeg),可在潜空间中执行扩散,用于医学影像分割。我们。潜空间条件扩散不仅能确保对多标签对象进行精确的 n-D 图像分割,还能缓解基于 DPM 的传统分割法的主要潜在问题:(。

qq_43583311的博客 1171

Kubernetes(k8s)浅谈 Service 和 DNS

简单了解 k8s Service 为什么需要Service 云原生,指的就是快速扩缩容,适应动态变化等,这样的机制就会使得pod的IP不是固定的,每次重启,都会变动 由于pod对应的IP容易变动,因为pod的重启,其IP就会和原来不同,如果相关联服务,采用pod IP,那每次pod 重启就需要修改使用此服务的IP 因此 k8s Service 提供了一个稳定访问的机制,提供稳定的IP Service 的机制 Service的命名机制{service name}.{service names

叮当猫的喵i 2866

ROS2学习笔记(二)-- 多机通讯原理简介及配置方法

简单介绍ROS2多机通信原理以及配置注意事项

aibingjin的博客 1万+

Kubernetes Service服务发现dns之CoreDNS

在 Kubernetes 集群中,**服务(Service)是通过 DNS 名称来访问的。当一个 Pod 需要访问另一个服务时,它会向 CoreDNS 发起一个 DNS 查询请求**。

西京刀客 2405

2.1 跟网型控制原理与局限性

本文深入分析了并网变流器的跟网型(GFL)控制技术及其局限性。GFL控制将变流器视为受控电流源,依赖锁相环(PLL)跟踪电网电压,在强电网下表现良好,但在弱电网中面临严峻挑战。研究发现,当电网短路比降低时,PLL动态与电网阻抗的负交互会导致系统失稳,同时GFL变流器缺乏电压支撑能力和惯量响应能力,在故障时易脱网。相比之下,构网型(GFM)控制具有电压源特性,能自主构建电网电压,更适合弱电网环境。随着新能源占比提高,GFL控制正逐渐被更具主动支撑能力的GFM控制所替代。

技术工作者 997

别再只改config了!YOLO/RT-DETR多通道输入实战:数据集结构、多卡训练与参数优先级避坑指南

本文详细解析了YOLO/RT-DETR模型在多通道输入(如8通道多光谱图像)中的实战应用,涵盖数据集结构优化、数据加载器改造、模型参数调优及多卡训练配置。针对常见的多通道输入报错问题,提供了系统的解决方案和性能优化技巧,帮助开发者高效实现非标准数据格式的适配与训练。

weixin_30955617的博客 397

【Kubernetes】基础k8s服务内部访问,与DNS解析,手动配置Endpoint,与Service协作对接外部资源,ExternalName实现的CNAME转发

服务访问基础:Service 通过CLUSTER-IP提供集群内访问,NodePort提供外部访问;Endpoints动态关联后端 Pod,实现流量转发。DNS 解析逻辑:集群 DNS(如kube-dns)遵循 服务名.命名空间.svc.cluster.local规则解析域名,Pod 内可通过短域名(自动补充规则 )或完整域名访问服务,让应用间通信无需硬编码 IP,更灵活可靠。实践验证:通过dns-testPod 内的wget。

m0_74282926的博客 2401

【Clickhouse】Cannot allocate block number in Zookeeper write prefix view location

我有一个问题,我CK集群跑批的时候,replicated表变成只读的了下面是CK的报错和当时ZK的日志。下面是zk报错开始 我认为是写入的时候,压力太大,ZK扛不住了,就按照博客里的建议优化了ZK的参数,现在偶尔还会只读,zk报错都是图里的那种clickhouse的集群是5分片的集群,数据量比较大。每小时批量一次,每次2-10W条数据,字段的话,不到200个字段,使用的 jdbc sink写入。

九师兄 836

Kubernetes 内部DNS访问 Service

在 Cluster 中,除了可以通过 Cluster IP 访问 Service,Kubernetes 还提供了更为方便的 DNS 访问。 [root@k8s-master ~]# kubectl get deployment -n kube-system NAME READY UP-TO-DATE AVAILABLE AGE coredns 1/1 1 1 25h coredns 是一个 DNS 服务器。每当有新的 Ser

小楼一夜听春雨,深巷明朝卖杏花 1630

YOLOv11 损失函数进阶:Varifocal Loss 让正负样本精度双升

创建self.alpha = alpha # 正样本权重系数self.gamma = gamma # 聚焦系数self.lambda_reg = lambda_reg # 回归损失权重# 分类损失:Varifocal Classification Loss# 正样本权重:基于预测置信度# 计算 BCE 损失并加权cls_loss = cls_loss.sum() / (cls_true.sum() + 1e-6) # 按正样本数归一化。

m0_71589036的博客 441

华为OD机考双机位C卷 - 采购订单 (Java & Python& JS & C/C++ & GO )

华为OD机考双机位C卷 - 采购订单 。提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。

算法大师! 426

kubernetes(k8s)的DNS和外网访问Service

1.查看namespace(命名空间)中的Service(服务) # kubectl get namespace NAME STATUS AGE default Active 25d kube-node-lease Active 25d kube-public Active 25d kube-system ...

路~可以走过 2542

《QT+PCL》点云的点选与框选

【代码】《QT+PCL》点云的点选与框选。

阁楼 3602
上一篇: kube-proxy工作原理
下一篇: 容器化的MySQL性能如何
大树叶
博客等级 码龄12年 1171粉丝 664原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值