k8s中service概述(一)ClusterIP

news/2025/3/22 11:03:02/

ClusterIP 是 Kubernetes 中最基础且常用的 Service 类型,主要用于在集群内部提供稳定的网络访问端点。以下是关于 ClusterIP Service 的详细说明:


1. ClusterIP 的核心功能
  • 集群内部访问:ClusterIP 提供一个集群内部的虚拟 IP(VIP),只能在 Kubernetes 集群内部访问,外部网络无法直接访问。

  • 服务发现:通过 Kubernetes 的 DNS 服务,其他 Pod 可以通过 Service 名称访问 ClusterIP。

  • 负载均衡:ClusterIP 会自动将流量分发到后端的多个 Pod,实现负载均衡。

  • 稳定的 IP 和端口:无论后端 Pod 如何变化,ClusterIP 的 IP 和端口保持不变,确保服务调用的稳定性。


2. ClusterIP 的工作原理

ClusterIP 的实现依赖于 Kubernetes 的核心组件和网络模型:

  1. Service 创建

    • 当创建一个 ClusterIP Service 时,Kubernetes 会为其分配一个虚拟 IP(ClusterIP),这个 IP 来自集群的 Service CIDR 范围(例如 10.96.0.0/12)。

    • Service 通过 selector 字段选择一组 Pod 作为后端。

  2. Endpoints 创建

    • Kubernetes 会自动创建与 Service 同名的 Endpoints 对象,其中包含所有匹配 selector 的 Pod 的 IP 和端口。

    • 如果 Pod 发生变化(例如扩容或重启),Endpoints 会自动更新。

  3. kube-proxy 的作用

    • 每个节点上的 kube-proxy 组件会监听 Service 和 Endpoints 的变化。

    • kube-proxy 通过以下方式实现流量转发:

      • iptables 模式:在节点上配置 iptables 规则,将流量从 ClusterIP 转发到后端 Pod。

      • IPVS 模式:使用更高效的 IPVS 实现流量转发。

    • 无论使用哪种模式,kube-proxy 都会确保流量被正确负载均衡到后端 Pod。

  4. DNS 解析

    • Kubernetes 的 CoreDNS 或 kube-dns 会为每个 Service 创建一条 DNS 记录。

    • 例如,Service 名称为 my-service,命名空间为 default,则其 DNS 名称为 my-service.default.svc.cluster.local

    • 集群内的 Pod 可以通过 DNS 名称访问 Service,DNS 会解析为 ClusterIP。


3. ClusterIP 的配置示例

以下是一个典型的 ClusterIP Service 的 YAML 配置文件:

 
  • selector:用于选择后端 Pod,只有匹配标签的 Pod 才会被纳入 Service 的后端。

  • ports

    • port:Service 暴露的端口,集群内的其他服务通过该端口访问 Service。

    • targetPort:后端 Pod 实际监听的端口。

    • protocol:支持的协议类型,默认为 TCP。


4. ClusterIP 的使用场景

ClusterIP 适用于以下场景:

  1. 微服务间通信

    • 在微服务架构中,服务之间通过 ClusterIP 进行内部通信。

    • 例如,前端服务通过 ClusterIP 访问后端 API 服务。

  2. 数据库访问

    • 数据库服务(如 MySQL、PostgreSQL)通常只在集群内部暴露,使用 ClusterIP 可以确保外部无法直接访问。

  3. 内部工具和服务

    • 例如监控系统(Prometheus)、日志系统(Elasticsearch)等,通常只在集群内部使用。

  4. 服务发现和负载均衡

    • ClusterIP 提供稳定的访问端点,并自动实现负载均衡,适合需要高可用的服务。


5. ClusterIP 的优缺点

优点

  • 简单易用,是 Kubernetes 默认的 Service 类型。

  • 提供稳定的 IP 和 DNS 名称,适合服务发现。

  • 自动负载均衡,支持后端 Pod 的动态变化。

缺点

  • 只能在集群内部访问,无法直接从外部访问。

  • 对于需要对外暴露的服务,需要结合 NodePort 或 LoadBalancer 使用。


6. ClusterIP 的调试和排查
  1. 查看 Service 信息

    kubectl get svc <service-name>

    输出示例:

    NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
    my-service   ClusterIP   10.96.123.45    <none>        80/TCP    5m

  2. 查看 Endpoints

    kubectl get endpoints <service-name>

    输出示例:

    NAME         ENDPOINTS                         AGE
    my-service   10.244.1.2:9376,10.244.2.3:9376   5m

  3. 检查 DNS 解析
    在集群内的 Pod 中使用 nslookupdig 检查 Service 的 DNS 解析:

    nslookup my-service.default.svc.cluster.local

  4. 检查 kube-proxy 和 iptables/IPVS 规则

    • 登录到节点,检查 iptables 或 IPVS 规则是否正常配置。


http://www.ppmy.cn/news/1581122.html

相关文章

CUL-CHMLFRP启动器 windows图形化客户端

CUL-CHMLFRP启动器 windows图形化客户端 基于v2 api开发的chmlfrp ui版本的第三方客户端 CUL原名CHMLFRP_UI CUL顾名思义为CHMLFRP-UI-Launcher 下载地址&#xff1a;https://cul.lanzoul.com/b00pzv3oyj 密码:ff50 下载解压运行即可&#xff08;仅支持win7以上版本&#xf…

C++从入门到实战(五)类和对象(第一部分)为什么有类,及怎么使用类,类域概念详解(附带图谱等更好对比理解)

C从入门到实战&#xff08;五&#xff09;类和对象&#xff08;第一部分&#xff09;为什么有类&#xff0c;及怎么使用类&#xff0c;类域概念详解 前言一、为什么要有类&#xff1f;类的好处&#xff08;一&#xff09;.与 C 语言对比类的作用1.1 数据和操作的组织方式1.2 代…

【leetcode hot 100 208】实现Trie(前缀树)

解法一&#xff1a;字典树 Trie&#xff0c;又称前缀树或字典树&#xff0c;是一棵有根树&#xff0c;其每个节点包含以下字段&#xff1a; 指向子节点的指针数组 children。对于本题而言&#xff0c;数组长度为 26&#xff0c;即小写英文字母的数量。此时 children[0] 对应小…

前端引擎革命:界面量子化渲染架构

引言&#xff1a;DOM坍塌后的次元跃迁 Chrome V8引擎实现98% ES2023规范支持&#xff0c;React 19并发渲染突破百万节点秒级更新。Shopify Hydrogen框架首屏用时降至380ms&#xff0c;Next.js 14服务端组件缓存命中率93%。Figma实时协同引擎支持500人同时操作&#xff0c;WebA…

个人作品集模板!除了Figma还可以选择什么软件?

在竞争激烈的设计行业中&#xff0c;作品集不仅是设计师能力的直观体现&#xff0c;更是打开职业机会的“金钥匙”。一份优秀的作品集需要兼具视觉吸引力、逻辑清晰度和专业深度。本文将从设计原则、工具选择到排版技巧&#xff0c;为你提供系统化的创作指南&#xff0c;并推荐…

材质 × 碰撞:Threejs 物理引擎的双重魔法

材质 在物理引擎中&#xff0c;材质(Material)用于描述物体的物理属性&#xff0c;例如摩擦力、弹性等。 const material new CANNON.Material("materialName");CANNON.Material&#xff1a; 物理材质&#xff0c;用于模拟物体之间的摩擦力、弹性等物理属性。 ma…

算法题(103):数独

审题&#xff1a; 本题需要我们找出数独的解&#xff0c;并打印出来 时间复杂度分析&#xff1a; 本题是9*9的数独格子&#xff0c;所以数据量小于25&#xff0c;可以使用2^n的算法 思路&#xff1a; 方法一&#xff1a;深度优先搜索 首先确定搜索及插入策略&#xff1a; 我们采…

[特殊字符] 2025蓝桥杯备赛Day10——B2120 单词的长度

&#x1f50d; 2025蓝桥杯备赛Day10——B2120 单词的长度 &#x1f680; 题目速览 题目难度&#xff1a;⭐️ 适合掌握字符串基本操作 考察重点&#xff1a;字符串分割、空格处理、标点符号处理 B2120 单词的长度 题目描述 输入一行单词序列&#xff0c;相邻单词之间由 …