当前位置: 首页 > news >正文

Kubernetes Service服务发现dns之CoreDNS

文章目录

    • 背景
    • 什么是Service、服务发现、Endpoint
    • 什么是CoreDNS
      • CoreDNS 的工作原理
    • 常用命令
      • coredns 运行状态
      • 根据服务名,判断某个服务dns解析是否正常

背景

Kubernetes 集群内部的服务发现是微服务架构的核心基础,而 DNS 服务则是实现这一机制的关键组件。

在 Kubernetes 集群中,服务发现允许 Pod 通过服务名(而非硬编码 IP)定位其他服务。

早期的默认 DNS 组件 kube-dns 因架构复杂、性能瓶颈和维护成本高等问题逐渐被弃用。自 Kubernetes 1.11 起,CoreDNS 成为官方推荐的 DNS 解决方案。

什么是Service、服务发现、Endpoint

在 Kubernetes中,Service是用于将一组Pod以稳定的网络接口暴露出来,公开为一个网络服务的抽象,提供稳定的访问入口。虽然 Pod 的 IP 是动态分配的、会频繁变动,但 Service 通过分配一个固定的虚拟 IP(ClusterIP)来解决 Pod 动态变化的问题,并实现负载均衡,确保客户端始终可以通过统一的方式访问服务。

在 Kubernetes 中,Pod的生命周期是短暂的,可能会被终止和重新创建,而 Service 提供了一个持久的访问入口,确保用户或其他服务可以通过固定的 IP 地址或 DNS 名称访问这些 Pod

Endpoint:
在 Kubernetes 中,Endpoint 是用来连接服务和实际提供服务的 Pod 的资源。Endpoint 对象负责维护一组 IP 地址和端口信息,这些信息指向在集群中运行的实际 Pod,使得客户端可以通过 Service 访问这些 Pod。

Endpoint则是与 Service 相关联的资源,存储了与该服务相关联的实际 Pod 的 IP 地址和端口列表。
- 当一个 Service 被创建时,Kubernetes 控制平面会自动生成与该 Service 对应的 Endpoint,
- 用来维护服务和实际运行的 Pod 之间的映射。

命令操作

查看 Service 相关的 Endpoint:

kubectl get endpoints <service-name>

查看 Endpoint 详细信息:

kubectl describe endpoints <service-name>

服务的 DNS 解析结果通常是其 ClusterIP,但如果你需要查看服务的具体后端 Pod,可以检查其 Endpoints.

kubectl get endpoints my-service -n default

注意,加强对 Services(服务)的理解, 从lens工具菜单,我们可以看到Services(服务)归类到网络。

什么是CoreDNS

官网: https://coredns.io/

CoreDNS 是 Kubernetes 中用于服务发现和内部 DNS 解析的默认 DNS 服务器。

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

这是最关键的插件,负责处理 Kubernetes 内部服务的 DNS 解析

CoreDNS 采用单进程模型,直接与 Kubernetes API 交互:

  • Kubernetes 插件:实时监听 Service/Endpoint/Pod 变更,生成 DNS 记录。
  • 插件链机制:通过组合插件实现 DNS 解析、缓存、转发等功能。
  • 无状态设计:无需依赖外部存储(如 etcd),降低运维复杂度。

CoreDNS 的工作原理

CoreDNS 的工作原理
1.当一个 Pod 请求一个服务的 DNS 名称(例如 my-service.my-namespace.svc.cluster.local)时,DNS 请求会被 CoreDNS 处理。
2.CoreDNS 检查 Corefile 中的配置,首先尝试使用 kubernetes 插件来解析请求。
3.如果服务名存在,CoreDNS 将返回服务的 ClusterIP 地址。
4.如果请求无法由 Kubernetes 内部解析,CoreDNS 使用 forward 插件将查询转发到外部 DNS 服务器进行解析。

常用命令

coredns 运行状态

  1. 查看 CoreDNS 的 Pod 状态

首先,确认 CoreDNS 的 Pod 是否正常运行。CoreDNS 通常位于 kube-system 命名空间。

kubectl get pods -n kube-system -l k8s-app=kube-dns

输出示例:

NAME                       READY   STATUS    RESTARTS   AGE
coredns-7f6cbbb7b8-abcde    1/1     Running   0          10d
coredns-7f6cbbb7b8-fghij    1/1     Running   0          10d

STATUS:确保 Pod 的状态是 Running。
READY:确保 Pod 的容器已经就绪(1/1 表示 1 个容器已就绪)。

  1. 查看 CoreDNS 的 Service

CoreDNS 通常通过一个 Service 暴露服务。可以查看其 Service 的状态。

kubectl get svc -n kube-system kube-dns

输出示例:

NAME       TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)         AGE
kube-dns   ClusterIP   10.96.0.10    <none>        53/UDP,53/TCP   10d

CLUSTER-IP:确保 CoreDNS 的 Service 有一个有效的 ClusterIP。
PORT(S):确保端口 53(UDP/TCP)已正确暴露。

  1. 检查 CoreDNS 的配置
    CoreDNS 的配置文件通常以 ConfigMap 的形式存在。可以查看其配置。
kubectl get configmap -n kube-system coredns -o yaml
  1. 验证 DNS 解析

最后,验证 CoreDNS 是否正常工作。可以在集群中创建一个临时 Pod 并测试 DNS 解析。

kubectl run -it --rm --image=busybox:1.28 --restart=Never -- dns-test -- nslookup kubernetes.default

根据服务名,判断某个服务dns解析是否正常

列出命名空间中的服务

kubectl get svc -n your-namespace

Kubernetes 会自动为每个 Service 分配一个 DNS 名称,格式为 <service-name>.<namespace>.svc.cluster.local

假设你找到的服务名是 my-service,位于 default 命名空间,那么它的 DNS 名称是:my-service.default.svc.cluster.local
如果服务位于其他命名空间(例如 my-namespace),则 DNS 名称是:my-service.my-namespace.svc.cluster.local

使用 nslookup 查询 DNS 信息

你可以通过创建一个临时 Pod(例如使用 busybox 镜像)来查询服务的 DNS 信息。

kubectl run -it --rm --image=busybox:1.36 --restart=Never dns-test -- nslookup my-service.default.svc.cluster.local

相关文章:

Kubernetes Service服务发现dns之CoreDNS

文章目录 背景什么是Service、服务发现、Endpoint什么是CoreDNSCoreDNS 的工作原理 常用命令coredns 运行状态根据服务名&#xff0c;判断某个服务dns解析是否正常 背景 Kubernetes 集群内部的服务发现是微服务架构的核心基础&#xff0c;而 DNS 服务则是实现这一机制的关键组…...

Spring Boot 测试:单元、集成与契约测试全解析

一、Spring Boot 分层测试策略 Spring Boot 应用采用经典的分层架构&#xff0c;不同层级的功能模块对应不同的测试策略&#xff0c;以确保代码质量和系统稳定性。 Spring Boot 分层架构&#xff1a; Spring Boot分层架构 A[客户端] -->|HTTP 请求| B[Controller 层] …...

用友NC系列漏洞检测利用工具

声明&#xff01;本文章所有的工具分享仅仅只是供大家学习交流为主&#xff0c;切勿用于非法用途&#xff0c;如有任何触犯法律的行为&#xff0c;均与本人及团队无关&#xff01;&#xff01;&#xff01; 目录标题 YongYouNcTool启动及适配环境核心功能界面预览一键检测命令执…...

PostgreSQL 创建表格

PostgreSQL 创建表格 在数据库管理中&#xff0c;表格&#xff08;Table&#xff09;是数据存储的基础。PostgreSQL作为一款强大的开源对象关系型数据库管理系统&#xff08;ORDBMS&#xff09;&#xff0c;创建表格是其最基本的功能之一。本文将详细讲解如何在PostgreSQL中创…...

一周一个Unity小游戏2D反弹球游戏 - 球的死区及球重生

前言 本文将实现当球弹到球板下方的死亡区域后,球会被重置到球板上发射点,并且重置物理状态的逻辑。 创建球的死亡区 之前创建的在屏幕下方的空气墙碰撞体可以将其Is Trigger勾选上,让其成为一个触发器,用来检测球是否进入该区域,如下。 创建一个脚本名为Deadzone…...

本地部署 DeepSeek:从 Ollama 配置到 Spring Boot 集成

前言 随着人工智能技术的迅猛发展&#xff0c;越来越多的开发者希望在本地环境中部署和调用 AI 模型&#xff0c;以满足特定的业务需求。本文将详细介绍如何在本地环境中使用 Ollama 配置 DeepSeek 模型&#xff0c;并在 IntelliJ IDEA 中创建一个 Spring Boot 项目来调用该模型…...

vue3:三项目增加404页面

一、路由添加 1、官网地址 带参数的动态路由匹配 | Vue Routerhttps://router.vuejs.org/zh/guide/essentials/dynamic-matching.html 2、复制核心语句 { path: /:pathMatch(.*)*, name: NotFound, component: NotFound } 3、粘贴到路由index.js中 4、建立页面 在view文件夹…...

MCAL(Microcontroller Abstraction Layer)介绍

目录 MCAL的核心作用 MCAL的模块组成 1. 微控制器驱动&#xff08;Microcontroller Drivers&#xff09; 2. I/O驱动&#xff08;DIO, PWM, ADC等&#xff09; 3. 通信驱动&#xff08;Communication Drivers&#xff09; 4. 存储驱动&#xff08;Memory Drivers&#xf…...

爬虫:PhantomJS的详细使用和实战案例

文章目录 一、PhantomJS介绍1.1 什么是 PhantomJS1.2 PhantomJS 的特点与优势二、PhantomJS 的安装2.1 在 macOS 上安装 PhantomJS2.2 在 Linux 上安装 PhantomJS2.3 在 Windows 上安装 PhantomJS2.4 验证安装三、PhantomJS 的基本使用3.1 示例 1:打开网页并截图3.2 示例 2:获…...

目标检测——数据处理

1. Mosaic 数据增强 Mosaic 数据增强步骤: (1). 选择四个图像&#xff1a; 从数据集中随机选择四张图像。这四张图像是用来组合成一个新图像的基础。 (2) 确定拼接位置&#xff1a; 设计一个新的画布(输入size的2倍)&#xff0c;在指定范围内找出一个随机点&#xff08;如…...

深度学习工程师的技术图谱和学习路径

在构建一个深度学习工程师的技术图谱时,按照“技能树与能力模型”的结构可以帮助清晰地展示出技术体系的层次化关系,帮助学习者更好地理解每个技术点的依赖与顺序。 深度学习工程师的技术图谱和学习路径 以下是深度学习工程师的技能树,包括从基础到进阶的学习路径,以及对…...

Qt 文件操作+多线程+网络

文章目录 1. 文件操作1.1 API1.2 例子1&#xff0c;简单记事本1.3 例子2&#xff0c;输出文件的属性 2. Qt 多线程2.1 常用API2.2 例子1&#xff0c;自定义定时器 3. 线程安全3.1 互斥锁3.2 条件变量 4. 网络编程4.1 UDP Socket4.2 UDP Server4.3 UDP Client4.4 TCP Socket4.5 …...

如何使用ArcGIS Pro制作横向图例:详细步骤与实践指南

ArcGIS Pro&#xff0c;作为Esri公司推出的新一代地理信息系统&#xff08;GIS&#xff09;平台&#xff0c;以其强大的功能和灵活的操作界面&#xff0c;在地理数据处理、地图制作和空间分析等领域发挥着重要作用。 在地图制作过程中&#xff0c;图例作为地图的重要组成部分&…...

Kotlin 嵌套类和内部类

在Kotlin中&#xff0c;嵌套类&#xff08;Nested Class&#xff09;和内部类&#xff08;Inner Class&#xff09;是两种不同的类&#xff0c;它们在定义和使用上有一些区别。 1.嵌套类&#xff08;Nested Classes&#xff09;默认是静态的&#xff08;即等同于Java中的stati…...

蓝蝶(BlueStacks)模拟器Root、Magisk、LSPosed及Shamiko框架安装与过应用检测指南

蓝蝶&#xff08;BlueStacks&#xff09;模拟器Root、Magisk、LSPosed及Shamiko框架安装与过应用检测指南 蓝蝶bluestacks模拟器root和magisk以及Lsposed和shamiko框架的安装过应用检测 一、引言 蓝蝶&#xff08;BlueStacks&#xff09;模拟器是一款广受欢迎的安卓模拟器&…...

OpenCV计算摄影学(6)高动态范围成像(HDR imaging)

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 高动态范围成像&#xff08;HDR imaging&#xff09;是一种图像处理技术&#xff0c;旨在通过增加图像的动态范围来更准确地表示真实世界的亮度差…...

[ComfyUI][AI生图]如何在Comfyui中安装插件管理器

如何在ComfyUI便携版中安装插件管理器 在现代软件环境中,图形用户界面(GUI)提供了一种直观的方式来与应用程序交互。ComfyUI是一个出色的GUI框架,它使用户能够通过图形化方式配置和管理他们的应用程序。特别是ComfyUI的便携版,它允许用户在没有安装的情况下使用这一工具,…...

初探Ollama与deepseek

什么是Ollama&#xff1f;它与大模型有什么联系&#xff1f; 简单说&#xff0c;Ollama就像是你电脑上的一个 “大模型小助手”。 以前&#xff0c;很多强大的大语言模型&#xff0c;比如能回答各种问题、写文章、翻译等的那些模型&#xff0c;要么只能在网上的服务器上用&am…...

Linux top 常用参数记录

top命令经常用来监控linux的系统状况&#xff0c;能实时显示系统中各个进程、线程的资源占用情况&#xff0c;是常用的性能分析工具。 一些常用参数记录 top的使用方式 top [-d number] | top [-bnp] # 5s 更新一次 top -d 5# 进行2次top命令的输出结果 top -n 2# 查看进程的…...

CCF-CSP认证 202104-1灰度直方图

题目描述 思路 首先输入矩阵长度、矩阵宽度和灰度范围&#xff0c;结果数组长度可固定&#xff0c;其中的元素要初始化为0。在输入灰度值的时候&#xff0c;结果数组中以该灰度值为索引的元素值1&#xff0c;即可统计每个灰度值的数量。 代码 C版&#xff1a; #include <…...

关于整数和浮点数在内存中的存储

了解整数和浮点数在内存中的存储可以更有助于我们深入理解知识&#xff0c;在解一些题时也能起到重要的作用&#xff0c;是我们在学C中不可或缺的重要组成部分&#xff0c;接下来我简要介绍一下&#xff1a;首先&#xff0c;整数就是用二进制码存储。在内存中以补码的形式进行存…...

革命性终端网站构建工具LiveTerm:5分钟打造个性化网页终端

革命性终端网站构建工具LiveTerm&#xff1a;5分钟打造个性化网页终端 【免费下载链接】LiveTerm &#x1f4bb; Build terminal styled websites in minutes! 项目地址: https://gitcode.com/gh_mirrors/li/LiveTerm LiveTerm是一款革命性的终端网站构建工具&#xff0…...

OpenClaw简历优化助手:Qwen2.5-VL-7B分析岗位JD生成匹配度报告

OpenClaw简历优化助手&#xff1a;Qwen2.5-VL-7B分析岗位JD生成匹配度报告 1. 为什么需要简历优化助手 去年换工作时&#xff0c;我花了整整两周时间反复修改简历。每次看到"岗位职责"里那些模糊的要求&#xff0c;总担心自己的简历不够匹配。最痛苦的是&#xff0…...

Android AdvancedRecyclerView与LiveData结合:实现数据实时更新的终极指南

Android AdvancedRecyclerView与LiveData结合&#xff1a;实现数据实时更新的终极指南 【免费下载链接】android-advancedrecyclerview RecyclerView extension library which provides advanced features. (ex. Googles Inbox app like swiping, Play Music app like drag and…...

ViGEmBus虚拟手柄驱动:让你的手柄在Windows游戏中完美适配

ViGEmBus虚拟手柄驱动&#xff1a;让你的手柄在Windows游戏中完美适配 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus 还在为手柄无法被PC游戏识别而困扰吗&…...

暗黑3一键宏终极指南:D3keyHelper让你的刷图效率翻倍

暗黑3一键宏终极指南&#xff1a;D3keyHelper让你的刷图效率翻倍 【免费下载链接】D3keyHelper D3KeyHelper是一个有图形界面&#xff0c;可自定义配置的暗黑3鼠标宏工具。 项目地址: https://gitcode.com/gh_mirrors/d3/D3keyHelper 还在为暗黑3中重复的技能按键感到疲…...

LeetCode //C - 1002. Find Common Characters

1002. Find Common Characters Given a string array words, return an array of all characters that show up in all strings within the words (including duplicates). You may return the answer in any order. Example 1: Input: words [“bella”,“label”,“roll…...

换了台电脑检测AI率结果不一样,是哪出问题了

“我自己电脑测的AI率是18%&#xff0c;去图书馆机房同学的电脑上测了一次&#xff0c;变成28%了。论文一字没改&#xff0c;怎么差了10个点&#xff1f;” 这个问题问得很具体&#xff0c;我来一步步排查。 先排查&#xff1a;两次测的是同一个文件吗&#xff1f; 这是最常…...

Elsevier Tracker:科研作者的审稿状态监控利器

Elsevier Tracker&#xff1a;科研作者的审稿状态监控利器 【免费下载链接】Elsevier-Tracker 项目地址: https://gitcode.com/gh_mirrors/el/Elsevier-Tracker 还在为Elsevier期刊审稿进度而焦虑吗&#xff1f;每天手动刷新页面、等待邮件通知的日子已经结束。Elsevie…...

突破格式限制:3种高效NCM转码方案全解析

突破格式限制&#xff1a;3种高效NCM转码方案全解析 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump NCM格式作为网易云音乐的加密音频格式&#xff0c;常导致用户面临设备兼容性差、跨平台播放受阻等问题。本文将通过开源工具实现NC…...