Kubernetes 服务发现与健康检查详解

Kubernetes 提供了多种机制来管理服务发现、负载均衡和容器健康状态监控。本文将围绕以下几个方面展开:

  1. Service 类型:ClusterIP、NodePort、Headless Service、LoadBalancer(MetallB)

  2. Ingress 的实现原理

  3. 健康检查探针:Liveness、Readiness、Startup


一、Service 类型详解

1. ClusterIP

ClusterIP 是默认的 Service 类型,用于在集群内部暴露服务。外部无法直接访问。

apiVersion: v1
kind: Service
metadata:name: nginx-service
spec:selector:app: nginxports:- protocol: TCPport: 8000      # Service 端口targetPort: 80  # Pod 端口type: ClusterIP     # 可省略,默认即为 ClusterIP

注释:

  • port: Service 对外提供的端口

  • targetPort: Pod 中容器监听的端口

  • 集群内可通过 nginx-service:8000 访问该服务

2. NodePort

NodePort 会在每个节点上开放一个静态端口,外部可通过 节点IP:端口 访问服务。

apiVersion: v1
kind: Service
metadata:name: nginx-nodeport
spec:selector:app: nginxports:- protocol: TCPport: 80targetPort: 80nodePort: 30080  # 可选,范围 30000-32767type: NodePort

注释:

  • nodePort: 若不指定,K8s 会自动分配一个端口

  • 外部访问方式:http://<节点IP>:30080

3. Headless Service

Headless Service 不分配 ClusterIP,直接返回后端 Pod 的 IP 地址列表。适用于需要直接访问 Pod 的场景(如 StatefulSet)。

apiVersion: v1
kind: Service
metadata:name: nginx-headless
spec:clusterIP: None  # 关键字段,表示 Headlessselector:app: nginxports:- protocol: TCPport: 80targetPort: 80

注释:

  • DNS 查询该 Service 会返回所有后端 Pod 的 IP

  • 适用于自定义负载均衡或状态ful服务发现

4. LoadBalancer 与 MetallB

在云环境中,LoadBalancer 类型会自动分配外部负载均衡器。在裸金属环境中,可使用 MetallB 实现类似功能。

MetallB 支持两种模式:

  • Layer2 模式:通过 ARP/NDP 响应将虚拟 IP 映射到某个节点

  • BGP 模式:通过 BGP 协议向路由器宣告路由,实现负载均衡

apiVersion: v1
kind: Service
metadata:name: nginx-lb
spec:selector:app: nginxports:- protocol: TCPport: 80targetPort: 80type: LoadBalancer

注释:

  • 在支持 LoadBalancer 的云平台中,会自动分配外部 IP

  • 在裸金属环境中需安装并配置 MetallB

二、Ingress 原理与功能

Ingress 是管理外部访问集群服务的 API 对象,通常用于 HTTP/HTTPS 路由。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: example-ingressannotations:nginx.ingress.kubernetes.io/rewrite-target: /
spec:rules:- host: example.comhttp:paths:- path: /apipathType: Prefixbackend:service:name: api-serviceport:number: 80

注释:

  • host: 域名规则

  • path: 路径匹配规则

  • backend: 转发到的 Service

Ingress 需配合 Ingress Controller(如 nginx-ingress、traefik)使用。

三、健康检查探针

Kubernetes 提供三种探针来监控容器健康状态:

1. Liveness Probe(存活探针)

用于检测容器是否存活,失败则会重启容器。

livenessProbe:httpGet:path: /healthport: 8080initialDelaySeconds: 10  # 容器启动后等待10秒开始检测periodSeconds: 5         # 每5秒检测一次

适用场景:检测死锁、应用无响应等。

2. Readiness Probe(就绪探针)

用于检测容器是否准备好接收流量,失败则从 Service 后端列表中移除。

readinessProbe:exec:command:- cat- /tmp/healthyinitialDelaySeconds: 5periodSeconds: 5

适用场景:等待依赖服务启动、加载配置完成等。

3. Startup Probe(启动探针)

用于保护慢启动容器,避免在启动过程中被误杀。

startupProbe:httpGet:path: /startupport: 8080failureThreshold: 30  # 最多尝试30次periodSeconds: 10     # 每10秒尝试一次

适用场景:启动时间较长的 Java 应用、数据库初始化等。

总结

Kubernetes 通过 Service 和 Ingress 提供了灵活的服务暴露方式,通过健康检查探针保障了应用的可靠性。合理使用这些机制,可以构建出高可用、易维护的云原生应用。

探针类型作用失败行为
LivenessProbe检测容器是否存活重启容器
ReadinessProbe检测容器是否就绪从 Service 中移除
StartupProbe保护慢启动容器不触发其他探针

建议根据应用特性合理配置探针,避免误判和频繁重启。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/94941.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/94941.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何规划一年、三年、五年的IP发展路线图?

‍在知识付费领域&#xff0c;规划 IP 发展路线&#xff0c;需要从短期、中期、长期不同阶段&#xff0c;系统地布局内容、运营与商业变现&#xff0c;逐步提升 IP 影响力与商业价值。一年目标&#xff1a;立足定位&#xff0c;夯实基础精准定位&#xff0c;打磨内容利用创客匠…

C++从入门到实战(二十)详细讲解C++List的使用及模拟实现

C从入门到实战&#xff08;二十&#xff09;C List的使用及模拟实现前言一、什么是List1.1 List的核心特性1.2 List与vector的核心差异1.3 List的构造、拷贝构造与析构1.3.1 常用构造函数1.3.2 析构函数1.4 List的迭代器1.4.1 迭代器类型与用法示例1&#xff1a;正向迭代器遍历…

人工智能学习:机器学习相关面试题(一)

1、 机器学习中特征的理解 def: 特征选择和降维 特征选择&#xff1a;原有特征选择出子集 &#xff0c;不改变原来的特征空间 降维&#xff1a;将原有的特征重组成为包含信息更多的特征&#xff0c; 改变了原有的特征空间降维的主要方法 Principal Component Analysis (主成…

亚马逊巴西战略升级:物流网络重构背后的生态革新与技术赋能之路

在全球电商版图中&#xff0c;拉美市场正以惊人的增长速度成为新的战略高地&#xff0c;而巴西作为其中的核心市场&#xff0c;凭借庞大的人口基数、高速发展的数字经济以及不断提升的消费能力&#xff0c;吸引着众多电商巨头争相布局。近日&#xff0c;亚马逊宣布将于2025年底…

PS自由变换

自由变换 自由变换用来对图层、选区、路径或像素内容进行灵活的像素调整。可以进行缩放、旋转、扭曲等多种操作。快捷键&#xff1a;CtrlT&#xff0c;操作完成后使用Enter键可以确认变换自由变换过程中如果出现失误&#xff0c;可以按ESC退出&#xff1b;满意可以按enter确定。…

【K8s】整体认识K8s之存储--volume

为什么要用volume&#xff1f;首先。容器崩溃或重启时&#xff0c;所有的数据都会丢失&#xff0c;我们可以把数据保存到容器的外部&#xff0c;比如硬盘nfs&#xff0c;这样&#xff0c;即使容器没了&#xff0c;数据还在&#xff1b;第二就是容器之间是隔离的。我们如果想共享…

flutter工程

安装flutter 在VSCode中安装flutter extension、flutter组件 国内源下载flutter 3.35.2的SDK&#xff0c;安装&#xff0c;官网下载不了 将flutter安装目录加入环境变量中 D:\program\flutter_sdk\flutter\bin 执行 C:\Windows\System32>flutter --version Flutter 3.35.2 •…

C/C++ 高阶数据结构 —— 二叉搜索树(二叉排序树)

​ &#x1f381;个人主页&#xff1a;工藤新一 ​ &#x1f50d;系列专栏&#xff1a;C面向对象&#xff08;类和对象篇&#xff09; ​ &#x1f31f;心中的天空之城&#xff0c;终会照亮我前方的路 ​ &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章…

stm32F4挂载emmc以及重定义printf

1.Cubemx SDIO USART 使用串口输出调试信息 FATFS Clock Configuration 防止堆栈溢出 2.Keil5 新建自定义文件夹及文件 将文件夹添加进工程 新建.c与.h文件&#xff0c;保存到自定义的文件夹&#xff0c;并添加到工程中 bsp_emmc.c #include "bsp_emmc.h" #include…

基于AI的大模型在S2B2C商城小程序中的应用与定价策略自我评估

摘要&#xff1a;本文聚焦电商行业&#xff0c;结合开源AI大模型与AI智能名片S2B2C商城小程序的技术特性&#xff0c;提出基于行业数据挖掘与自我评估的定价策略。通过分析行业价格分布与销量占比&#xff0c;结合商品设计、品牌创意度、商品丰富度及内功等评估指标&#xff0c…

中国移动云电脑一体机-创维LB2004_瑞芯微RK3566_2G+32G_开ADB安装软件教程

中国移动云电脑一体机-创维LB2004_瑞芯微RK3566_2G32G_开ADB安装软件教程简介&#xff1a;中国移动云电脑一体机-创维LB2004&#xff0c;显示器是23.8英寸1920x1080分辨率&#xff0c;安卓盒子配置是瑞芯微RK3566-四核-1.8GHz处理器-2G32G&#xff0c;预装Android11系统。具体操…

普蓝自研AutoTrack-4X导航套件平台适配高校机器人实操应用

在当前高校机器人工程、人工智能、自动化等专业的教学与科研中&#xff0c;师生们常常面临一个核心痛点&#xff1a;缺乏一套 “开箱即用、可深研、能落地” 的自主移动导航平台 —— 要么是纯仿真环境脱离实际硬件&#xff0c;要么是硬件零散需大量时间搭建&#xff0c;要么是…

2025年工会证考试题库及答案

一、单选题1.工会法人资格审查登记机关自收到申请登记表之日起(  )日内对有关申请文件进行审查&#xff0c;对审查合格者&#xff0c;办理登记手续&#xff0c;发放《工会法人资格证书》及其副本和《工会法人法定代表人证书》。A.二十B.十五C.六十D.三十答案:D 解析:第七条基…

【OpenGL】LearnOpenGL学习笔记17 - Cubemap、Skybox、环境映射(反射、折射)

上接&#xff1a;https://blog.csdn.net/weixin_44506615/article/details/150935025?spm1001.2014.3001.5501 完整代码&#xff1a;https://gitee.com/Duo1J/learn-open-gl | https://github.com/Duo1J/LearnOpenGL 一、立方体贴图 (Cubemap) 立方体贴图就是一个包含了6张2…

第十七章 ESP32S3 SW_PWM 实验

本章将介绍使用 ESP32-S3 LED 控制器(LEDC)。 LEDC 主要用于控制 LED&#xff0c;也可产生PWM信号用于其他设备的控制。该控制器有 8 路通道&#xff0c;可以产生独立的波形&#xff0c;驱动 RGB LED 等设备。 LED PWM 控制器可在无需 CPU 干预的情况下自动改变占空比&#xff…

Flink CDC如何保障数据的一致性

Flink CDC如何保障数据的一致性 前言 在大规模流处理中&#xff0c;故障是无可避免的。机器会宕机&#xff0c;网络会抖动。一个可靠的流处理引擎不仅要能高效地处理数据&#xff0c;更要在遇到这些故障时&#xff0c;保证计算结果的正确性。Apache Flink 正是因其强大的容错机…

Spring Boot 定时任务入门

1. 概述 在产品的色彩斑斓的黑的需求中&#xff0c;有存在一类需求&#xff0c;是需要去定时执行的&#xff0c;此时就需要使用到定时任务。例如说&#xff0c;每分钟扫描超时支付的订单&#xff0c;每小时清理一次日志文件&#xff0c;每天统计前一天的数据并生成报表&#x…

学习:uniapp全栈微信小程序vue3后台(6)

26.实现描述评分标签的双向数据绑定 /pages/wallpaper/picadd Array.prototype.splice() splice() 方法就地移除或者替换已存在的元素和/或添加新的元素。 二次确认 展现 确认标签 删除标签 温故知新&#xff1a; 标签&#xff1a; 关闭标签 27.uni-data-select调用云端分类…

Azure Marketplace 和 Microsoft AppSource的区别

微软的商业应用生态中&#xff0c;Azure Marketplace 和 Microsoft AppSource 是微软并行的两个主要“应用市场”&#xff08;Marketplace&#xff09;&#xff0c;它们共同构成了微软的“商业市场”&#xff08;Commercial Marketplace&#xff09;计划&#xff0c;但服务的目…

完整实验命令解析:从集群搭建到负载均衡配置(2)

一、环境准备与基础网络配置1.1 节点角色与网络规划节点角色主机名所属网段IP 地址网关核心功能Web 服务器web110.1.8.0/2410.1.8.1110.1.8.10&#xff08;后期调整为 10.1.8.20&#xff09;部署 Nginx/HTTPD&#xff0c;提供 Web 服务Web 服务器web210.1.8.0/2410.1.8.1210.1.…