K8s: 集群内Pod通信机制之DNS

k8s篇-集群内的DNS原理与配置 CoreDNS是一个DNS解析的组件,作为集群内的DNS服务器,为集群内部提供域名解析服务。比如当集群内Pod要访问某个service name时,就会用到coredns的解析服务。 DNS解析原理: 当部署好coredns后,集群中会有一个名为kube-dns的service,以及这个service下还有两个名为CoreDNS的Pod后端。 $ kubectl get svc kube-dns -n kube-system NAME TYPE CLUSTER-IP 阅读详情

集群内Pod通信机制之DNS

  • Kubernetes 支持两种基本的服务发现模式 —— 环境变量和 DNS

1 ) DNS 概述

  • 可以使用附加组件 为 Kubernetes 集群设置 DNS 服务
  • 支持群集的 DNS 服务器(例如 CoreDNS)监视 Kubernetes API 中的新服务,并为每个服务创建一组DNS 记录
  • 如果在整个群集中都启用了 DNS,则所有 Pod 都应该能够通过其 DNS 名称自动解析服务
  • 例如,如果在 Kubernetes 命名空间 “my-ns” 中有一个名为 “my-service” 的服务
  • 则控制节点和DNS服务共同为 “my-service.my-ns” 创建 DNS 记录
  • “my-ns” 命名空间中的 Pod 应该能够通过简单地对 my-service 进行名称查找来找到它 (“my-service.my-ns” 也可以)
  • 其他命名空间中的Pod必须将名称限定为 my-service.my-ns
  • 这些名称将解析为为服务分配的群集 IP

2 )DNS 实践

  • Kubernetes DNS 在群集上调度 DNS Pod 和 服务

  • 并配置 kubelet 以告知各个容器使用 DNS 服务的 IP来解析 DNS 名称

  • 其原理是通过这个DNS记录为每个pod提供一个单一的这个域名

  • 然后让集群的DNS服务都能够把这个pod IP给它解析出来

  • 我们不推荐进入这个pod的IP 地址,有一些特殊的pod,比如说静态的 pod

  • 它的IP实际上是不变的,在这种方式下,会需要一个域名来给它固定一下

  • 因为我们不会记这个IP地址,我们会记这个域名解析的地址

  • 当 K8s 需要给一个pod提供个固定的域名的时候,就会涉及到创建DNS记录的这个方式

  • A/AAAA 记录

    • “普通” 服务会以 my-svc.my-namespace.svc.cluster-domain.example
    • 这种名字的形式被分配一个DNS A 或 AAAA 记录,取决于服务的 IP 协议族
    • 该名称会解析成对应服务的集群 IP
  • Pods A/AAAA 记录

    • 经由 Deployment 或者 DaemonSet 所创建的所有 Pods 都会有如下 DNS 解析项与之对应:
      pod-ip-address.deployment-name.my-namespace.svc.cluster-domain.example.
      
    • 就是我的 pod 创建之后,它会有一个pod IP地址, 然后 deployment 的名称再加上namespace
    • 再加上 svc.cluster-domain.example 这么一个路径来提供这个pod的一个访问路径
  • 然后,Pod本身提供 的 hostname 和 subdomain 字段

    • 比如,创建 Pod 时其主机名取自 Pod 的 metadata.name 值
  • hostname,就是我的主机名, 这个pod我可以认为它是一个最小的主机,这个主机已经有个名字了,比如说叫 busybox1

  • 然后,它的子域名的名称就叫 default-subdomain ,或者叫 subdomain 也行

  • 然后域名就是你的公司名称,集群的名称,可以是你公司的域名,比如 x.com

  • 有了这样的参数之后,我们创建的pod,它就会自带 DNS这个域名,它的hostname 就会变成一个 full qualified 这么一个域名

  • 通过这个域名,能够让别人通过这个DNS服务来找到我

  • DNS服务,比如说我访问一个网站,x.com, 在公网上域名解析,会有 x.com 对应IP地址的解析记录

  • 所以, 通过访问这个域名,然后会拿到这个IP地址,之后,通过HTTP协议连到这个服务器上

  • 然后进行握手认证, 以及后续可能的cookie的校验, session的校验等来给我返回这个数据,这就是网络服务提供的一个过程

  • 创建 dns-pod.yaml

    apiVersion: v1
    kind: Service
    metadata:
      name: default-subdomain
    spec:
      selector:
        app: busybox
      clusterIP: None
      ports:
      - port: 1234 
        targetPort: 1234
    ---
    apiVersion: v1
    kind: Pod
    metadata:
      name: busybox1
      labels:
        app: busybox
    spec:
      hostname: busybox-1
      subdomain: aaa
      containers:
      - name: busybox
        image: busybox
        command:
        - sleep
        - "3600"
    ---
    apiVersion: v1
    kind: Pod
    metadata:
      name: busybox2
      labels:
        app: busybox
    spec:
      hostname: busybox-2
      subdomain: bbb
      containers: 
      - name: busybox
        image: busybox
        command:
        - sleep
        - "3600"
    
  • $ kubectl create -f dns-pod.yaml 创建Service和2组pod

    service/default-subdomain created
    pod/busybox1 created
    pod/busybox2 created
    
  • $ get po -w | grep busybox 查看pod的创建状态

    busybox1                        1/1     Running            0                 108s
    busybox2                        1/1     Running            0                 108s
    
  • $ kubectl exec -it busybox2 -- sh 登录一台pod

  • $ hostname busybox-2 这个是简短的

  • $ hostname -f busybox-2.bbb.default.svc.cluster.local 这个是全的,是dns上注册的地址

  • 有了上面全的域名地址,就可以访问到它这个pod了,通过这种方式,K8s提供了pod的dns注册机制

  • DNS 会为此名字提供一个 A 记录或 AAAA 记录,指向该 Pod 的 IP

  • “busybox1” 和 “busybox2” 这两个 Pod 分别具有它们自己的 A 或 AAAA 记录

7_DNS 服务器部署 - 实践 (五) - dns 集群 DNS 服务器部署 - 实践 (五) - dns 集群 文章目录DNS 服务器部署 - 实践 (五) - dns 集群dns 集群实验server1 master服务器配置server3 slave服务器配置测试 dns 集群 dns 集群:该实验中 一个主服务器,一个辅服务器,缓解主服务器压力,主服务更新记录主动通知辅服务器。 实验 主机 IP role server1 172.25.9.1/24 , 172.25.254.1/24 DNS 主服务器 server2 172.2 阅读详情

相关推荐

Kubernetes Pod DNS 异常排查与 CoreDNS 策略优化实战

在 Kubernetes 集群中,Pod 依赖 DNS 服务完成内部服务发现与外部域名解析,DNS 故障往往直接导致业务不可用或部署失败。本文聚焦于 Kubernetes DNS 异常的排查方法与 CoreDNS 策略优化实战,从 Pod 无法解析域名的典型现象入手,逐步定位问题源头,涵盖 CoreDNS 配置误用、节点网络异常、UDP 丢包、缓存配置不足等多个维度,并结合 NodeLocalDNS、stubDomains 与缓存优化策略,提供面向生产环境的 DNS 稳定性提升方案。

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 2120

Kubernetes(k8s)DNS(CoreDNS)介绍

文章目录一、DNS服务概述二、CoreDNS配置解析三、Pod的dns策略1)Pod dns策略2)测试解析结果四、测试CoreDNS1)pod验证2)创建service和Deployment来验证3)宿主机上解析域名验证 一、DNS服务概述 service发现是k8s中的一个重要机制,其基本功能为:在集群内通过服务名对服务进行访问,即需要完成从服务名到ClusterIP的解析。 k8s主要有两种service发现机制:环境变量和DNS。没有DNS服务的时候,k8s会采用环境变量的形式,但一旦有多个ser

匠人精神,持之以恒! 1万+

自动化运维之k8s——Kubernetes集群部署、pod、service微服务、kubernetes网络通信

一、Kubernetes简介 1、Kubernetes简介 在Docker 作为高级容器引擎快速发展的同时,在Google内部,容器技术已经应用了很多年,Borg系统运行管理着成千上万的容器应用。 Kubernetes项目来源于Borg,可以说是集结了Borg设计思想的精华,并且吸收了Borg系统中的经验和教训。 Kubernetes对计算资源进行了更高层次的抽象,通过将容器进行细致的组合,将最终的应用服务交给用户。 Kubernetes的好处: (1)隐藏资源管理和错误处理,用户仅需要关

Zhaohui_Zhang的博客 9101

K8S DNS使用

。

k8seasz的博客 3040

【K8S系列】深入解析DNS

在 Kubernetes 中,有两种常见的 DNS 服务器: kube-dns 也是(Cluster DNS) CoreDNS 这两个都是 Kubernetes 集群中的默认 DNS 服务器,用于为 Pod 和 Service 提供域名解析服务。

颜淡慕潇 3万+

18、Kubernetes 权限控制与容器运行时配置详解

本文详细介绍了 Kubernetes 中的基于角色的访问控制(RBAC)和 kubelet 容器运行时的相关配置。在 RBAC 部分,探讨了如何定义角色、集群角色,并通过绑定机制将权限分配给用户和 ServiceAccount,同时展示了如何为 Pod 分配 ServiceAccount 以实现身份验证和授权操作。在 kubelet 配置部分,深入解析了其集群配置、容器运行时配置和网络配置,以及这些配置如何协同工作以确保 Kubernetes 集群的正常运行。通过本文,读者可以更好地理解如何管理 Kuber

f0g1h2的博客 64

Kubernetes DNS 名称解析详解

Kubernetes DNS解析详解:服务kubernetes.default.svc.cluster.local是集群内建的API Server服务。该地址遵循服务名.命名空间.资源类型.集群域的层次结构,其中kubernetes是服务名,default表示命名空间,svc表示Service资源类型,cluster.local是默认集群域名。由于DNS搜索域配置,在Pod内可使用简写形式如kubernetes(同命名空间)或kubernetes.default(跨命名空间),但推荐使用完整域名以避免歧义。

风水道人 656

HDMI协议介绍(一)--Overview

HDMI全称(High Definition Multimedia Interface)高清多媒体接口,支持在单线缆上传输全数字高清视频和多声道音频。

SlamDunk的博客 2万+

【Kubernetes】当K8s出现问题时,从哪些方面可以排查

K8s问题的排查:1. POD启动异常、部分节点无法启动pod、2. 审视集群状态、3. 追踪事件日志、4. 聚焦Pod状态、5. 检查网络连通性、6. 审视存储配置、7. 研究容器日志、8. K8S集群网络通信、9. 问题:Service 是否通过 DNS 工作?的讲解

m0_75058342的博客 5728

Matlab实战:用卡尔曼滤波搞定无人机GPS轨迹优化(附完整代码)

本文详细介绍了如何使用Matlab实现卡尔曼滤波(KF)算法优化无人机GPS轨迹,提供完整代码和工程实践指南。通过线性卡尔曼滤波技术,有效降低定位噪声,提升轨迹平滑度,适用于无人机导航和控制系统开发。

weixin_29061425的博客 253

Stata实战入门:从数据导入到基础分析的全流程指南

本文提供了Stata实战入门的全流程指南,从数据导入、清洗到基础分析和可视化,帮助初学者快速掌握Stata的核心功能。通过详细的步骤和实用技巧,读者可以高效完成数据处理、变量操作、描述性统计和回归分析等任务,提升数据分析效率。

weixin_28327051的博客 384

Kubernetes 集群中 Pod 的内部通信机制

Kubernetes 中的 Pod 通信机制通过网络插件、Service、负载均衡器和网络策略等技术,实现了高效、安全和灵活的微服务通信。无论是在同一 Pod 中还是跨 Pod、跨节点甚至跨区域,Kubernetes 都提供了一整套完备的解决方案,帮助开发者管理分布式系统中的通信复杂性。在实际项目中,理解和合理配置 Kubernetes 的通信机制,不仅可以提升系统的性能和可扩展性,还能通过保障通信安全性。

孔乙己的博客 1113

钣金设计高薪进阶:从材料工艺到DFMA降本增效全解析

钣金设计是机械制造领域的核心技术之一,它涉及将金属板材通过切割、折弯、焊接等工艺成型为所需零件。其核心原理在于深刻理解材料特性、制造工艺约束与结构力学,以确保设计在功能、成本与可制造性之间取得最佳平衡。这项技术的价值在于,优秀的钣金设计能直接驱动产品降本增效,通过优化材料利用率、简化装配工序和避免设计缺陷,为企业节省大量模具与生产成本。其应用场景广泛,从机箱机柜、汽车部件到电子设备外壳无处不在。本文将聚焦于实现这一价值的关键路径,深入探讨面向制造与装配的设计(DFMA)原则在钣金领域的实战应用,并剖析如何通

weixin_34301132的博客 394

Kubernetes中Service与Pod的DNS解析机制探究

本文深入剖析Kubernetes集群内服务与Pod的DNS解析机制。详细阐述了Kubernetes如何为服务和Pod创建DNS记录,包括不同类型服务(如普通服务和无头服务)的DNS记录形式,Pod的多种DNS解析方式及其相关字段(如hostname、subdomain、setHostnameAsFQDN)的作用。

进击的Blazor 1349

Datalog语言详解

Datalog是一种声明式逻辑编程语言,起源于数据库理论和逻辑编程领域。作为Prolog的子集,它专注于递归查询和推理,通过定义事实和规则来描述数据关系而非计算步骤。Datalog的关键特性包括规则安全、递归、分层否定和扩展聚合功能,保证了程序的终止性和高效性。相较于SQL,Datalog更擅长处理递归查询;相比Prolog,它更注重数据库友好性。Datalog在程序分析、知识图谱、网络安全等领域有广泛应用,其声明式特性使代码简洁易维护,但同时也面临生态系统小、性能调试难等挑战。现代工具如Soufflé、D

bulita great world 1849

手把手教你接入京东购物小程序:从领券到下单的全流程解析

本文详细解析了如何从API申请到领券下单,手把手教你接入京东购物小程序的全流程。涵盖京东联盟账号注册、商品信息获取、优惠券链接转换等关键技术实践,帮助开发者高效实现电商功能集成,提升用户购物体验。

g5h6i的博客 911

【Kubernetes】k8s集群的pod基础

pod基础

weixin_68840588的博客 1049

S7-200SMART通过表格指令实现模拟量信号滑动平均值滤波的具体方法

S7-200SMART通过表格指令实现模拟量信号滑动平均值滤波的具体方法

Robot_PLC_HMI_Automation 6727

Kubernetes—k8s集群的pod理论详解

Pod是kubernetes中最小的资源管理组件,Pod也是最小化运行容器化应用的资源对象。一个Pod代表着集群中运行的一个进程。kubernetes中其他大多数组件都是围绕着Pod来进行支撑和扩展Pod功能例如:用于管理Pod运行的StatefulSet和Deployment等控制器对象,用于暴露Pod应用的Service和Ingress对象,为Pod提供存储的PersistentVolume存储资源对象等pause容器(基础容器/父容器/根容器)给Pod容器组做环境初始化。

aran2002的博客 1734

构建高效的LLM应用测试框架

《构建高效的LLM应用测试框架》 关键词:LLM,测试框架,应用测试,效率优化,测试原理 摘要:本文将深入探讨构建高效LLM应用测试框架的必要性、方法与步骤,旨在为开发者提供一套系统化、可操作的测试解决方案,从而提升LLM

AI天才研究院 1048

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

【Kubernetes】k8s集群Pod概述

例如:用于管理Pod运行的StatefulSet和Deployment等控制器对象,用于暴露Pod应用的Service和Ingress对象,为Pod提供存储的PersistentVolume存储资源对象等。

qq_54188720的博客 1985

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

K8s: 集群内Pod通信机制之环境变量

2.3 调整顺序,这时候已经有 service 了,删除 development, 重新启动 development。2.1 这里我们先反过来,先创建 deployment 再创建 service。2.2 再创建 service:svc-my-nginx.yaml。好现在服务已经运行起来了, 现在进入pod容器中。借用之前的 development 先运行起来。创建 svc-my-nginx.yaml。

Wang的专栏 1673

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

【k8s】2.k8s通信原理

kube-proxy 监听 service 和 endpoint 的变化,当有 service 创建时,所有节点的 kube-proxy 在节点上随机选择一个端口,在 iptables 中追加一条,把访问 service 的请求重定向到这个端口的,并监听这个端口的连接请求。pause 容器会创建一个网络命名空间,其他容器加入到 puase 容器中共享 pause 的网络,一个 pod 中所有的进出流量都是通过 pause 容器完成的,通过 localhost 相互通信。(封包解包有性能开销)

lixiaonan0318的博客 3018

K8s 中Pod 之间的通信详解

在 Kubernetes(K8s)中,是集群网络模型的核心部分。docker0cni0flannel.1veth0cni0veth1cni0flannel.1flannel.1eth0flannel.1Kubernetes 提供 DNS 解析机制,Service 的 DNS 格式为。service-a在目标命名空间中创建一个类型的 Service,指向源命名空间的 Service。

wamp0001的博客 1501
上一篇: K8s: 集群内Pod通信机制之环境变量
下一篇: K8s: 从集群外部访问Service
Wang's Blog
博客等级 码龄12年 7433粉丝 2421原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wang's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值