Kurbenetes-Service(1)

在Kubernetes(简称K8s)的生态中,Pod是最小的部署单元,但Pod存在一个天然的"痛点"------生命周期短暂,IP地址会随着Pod的创建、销毁而动态变化。如果直接通过Pod IP访问应用,稳定性根本无法保障。这时候,Service就应运而生了。

本文将从"为什么需要Service"出发,逐步深入讲解Service的核心概念、工作原理、常见类型及实战配置,帮你彻底搞懂Service在K8s集群中的作用和使用方式。

一、为什么需要Kubernetes Service?

要理解Service的价值,首先要明确Pod的局限性:

  • IP动态变化:Pod重启、重建(如滚动更新、节点故障)后,IP会重新分配,客户端无法固定依赖这个IP;

  • 负载均衡缺失:多副本Pod部署时,客户端需要自己实现请求分发逻辑,无法高效利用多副本提升并发能力;

  • 网络隔离与访问控制:直接暴露Pod到集群外存在安全风险,需要一层"中间层"统一管理访问规则。

Service的核心作用就是解决上述问题:它为一组具有相同功能的Pod提供一个固定的访问入口(ClusterIP),并通过标签选择器(Label Selector)关联Pod,实现请求的负载均衡和Pod的动态替换无感。

核心总结:Service是Pod的"稳定代理",屏蔽了Pod的动态变化,提供统一、可靠的访问方式。

二、Service核心概念与工作原理

2.1 核心组件

一个完整的Service由以下关键部分组成:

  1. 标签选择器(Label Selector) :Service通过Label关联Pod,只有带有对应标签的Pod才会被纳入Service的管理范围。例如,标签为app: nginx的Pod,会被匹配selector: {app: nginx}的Service关联;

  2. ClusterIP:Service在集群内部的固定虚拟IP,是Service的核心访问入口。ClusterIP仅在集群内部可访问,外部无法直接访问;

  3. 端口映射(Ports):定义Service的端口与Pod容器端口的映射关系,包括:

    1. port:Service暴露的端口(集群内部访问时使用);

    2. targetPort:Pod容器中应用实际监听的端口(必须与容器内应用端口一致);

    3. nodePort(仅NodePort类型):集群节点暴露的端口(外部访问时使用);

    4. containerPort:容器内部应用的端口(在Pod定义中指定)。

  4. Endpoints:Service自动维护的Pod访问列表,记录了关联Pod的IP和targetPort。当Pod动态变化时,Endpoints会自动更新,确保Service始终能指向可用的Pod。

2.2 工作流程

Service的工作流程可以简化为以下几步:

  1. 用户创建Service,指定标签选择器和端口映射;

  2. K8s控制器(Endpoint Controller)根据标签选择器匹配Pod,生成并维护Endpoints列表;

  3. 当客户端访问Service的ClusterIP:port时,请求会被K8s的网络插件(如Calico、Flannel)转发到Endpoints中的某个Pod的IP:targetPort(默认采用轮询负载均衡策略);

  4. 若Pod发生销毁、重建或扩容缩容,Endpoints会实时更新,Service无需任何配置修改,客户端访问不受影响。

相关推荐
MonkeyKing_sunyuhua2 小时前
docker compose up -d --build 完全使用新代码打包的方法
docker·容器·eureka
醇氧2 小时前
【docker】mysql 8 的健康检查(Health Check)
mysql·docker·容器
70asunflower6 小时前
用Docker创建不同的容器类型
运维·docker·容器
CodeGolang7 小时前
Docker容器化部署Zabbix监控系统完整指南
docker·容器·zabbix
ghostwritten8 小时前
春节前夕,运维的「年关」:用 Kubeowler 给集群做一次「年终体检」
运维·云原生·kubernetes
[shenhonglei]18 小时前
灰度发布功能需求说明书
kubernetes
lpruoyu18 小时前
【Docker进阶-03】存储原理
docker·容器
文静小土豆19 小时前
Docker 与 containerd 代理配置详解:镜像拉取速度慢的终极解决方案
运维·docker·容器
JY.yuyu20 小时前
Docker常用命令——数据卷管理 / 端口映射 / 容器互联
运维·docker·容器
lpruoyu21 小时前
【Docker进阶-06】docker-compose & docker swarm
运维·docker·容器