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

k8s Headless Service

Kubernetes 无头服务(Headless Service)配置与使用场景
1.无头服务概述
无头服务(Headless Service)是 Kubernetes 中的一种特殊服务类型,它**不分配集群 IP(ClusterIP),而是直接暴露 Pod 的 DNS 记录。**这使得客户端可以直接访问每个 Pod,而不是通过负载均衡器。
2.无头服务的特点
无 ClusterIP:不分配虚拟 IP,spec.clusterIP 设置为 None。
直接暴露 Pod IP:通过 DNS 解析直接返回 Pod 的 IP 地址。
无负载均衡:客户端直接访问 Pod,不通过负载均衡器。
适用于有状态应用:常与 StatefulSet 配合使用,适用于数据库集群、分布式缓存等场景。

3.创建无头服务
以下是一个无头服务的 YAML 配置示例:

apiVersion: v1
kind: Service
metadata:name: my-headless-service
spec:selector:app: my-appports:- port: 80targetPort: 80clusterIP: None  # 关键设置

此配置中,clusterIP: None 表示这是一个无头服务。
4. 应用场景
分布式系统:如分布式数据库(MySQL、PostgreSQL)、缓存集群(Redis、Elasticsearch)等,客户端可以直接访问每个 Pod。
有状态应用:与 StatefulSet 结合,为每个 Pod 提供稳定的网络标识。
测试和调试:开发者可以直接访问特定 Pod 进行测试。

5.使用示例
以下是一个结合 StatefulSet 的无头服务示例:

apiVersion: v1
kind: Service
metadata:name: mysql-headless
spec:selector:app: mysqlports:- port: 3306targetPort: 3306clusterIP: None

此服务允许客户端通过 DNS 直接访问每个 MySQL Pod。
6. 注意事项
DNS 解析:客户端通过 DNS 查询获取 Pod IP,因此 DNS 服务必须可用。
网络策略:可以通过 NetworkPolicy 控制对无头服务的访问。
无头服务为 Kubernetes 中的有状态应用和分布式系统提供了灵活的网络访问方式,通过直接访问 Pod,避免了负载均衡的开销,同时简化了服务发现。

http://www.lryc.cn/news/2394910.html

相关文章:

  • Linux上安装MongoDB
  • Redis最佳实践——安全与稳定性保障之访问控制详解
  • 【华为开发者空间 x DeepSeek】服务器运行Ollama并在本地调用
  • Halcon
  • STM32之IIC(重点)和OLED屏
  • 学习海康VisionMaster之表面缺陷滤波
  • 游戏引擎学习第314天:将精灵拆分成多个层
  • 【学习笔记】深度学习-梯度概念
  • 【数据结构】图的存储(邻接矩阵与邻接表)
  • tomcat yum安装
  • 【Elasticsearch】suggest_mode
  • 数据库只更新特定字段的两种方式(先读后写 vs. 动态组织 SQL)-golang SQLx 实现代码(动态组织 SQL)
  • 从翻译后修饰角度解析人工合成途径与底盘细胞的适配性-文献精读136
  • Cesium快速入门到精通系列教程一
  • [Windows] 剪映 视频编辑处理
  • 决策树 GBDT XGBoost LightGBM
  • stm32 / arduino TPL0401A使用教程
  • 数据结构与算法之单链表面试题(新浪、百度、腾讯)
  • 单板机8088C语言计划
  • 一周学会Pandas2之Python数据处理与分析-数据重塑与透视-pivot() - 透视 (长 -> 宽,有限制)
  • 机器学习中无监督学习方法的聚类:划分式聚类、层次聚类、密度聚类
  • 【HW系列】—溯源与定位—Linux入侵排查
  • CPO-BP+MOPSO,冠豪猪优化BP神经网络+多目标粒子群算法!(Matlab源码)
  • 模块化设计,static和extern(面试题常见)
  • 【快速解决】数据库快速导出成sql文件
  • 使用 Syncfusion 在 .NET 8 中生成 PDF/DOC/XLS/PPT
  • LearnOpenGL-笔记-其十二
  • 【C++】C++面向对象设计的核心思想之一: 接口抽象、解耦和可扩展性
  • Namespace 命名空间的使用
  • mac 下安装Rust Toolchain(Nightly)