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无需任何配置修改,客户端访问不受影响。

相关推荐
Cyber4K12 小时前
【Kubernetes专项】K8s 控制器 DaemonSet 从入门到企业实战应用
云原生·容器·kubernetes
切糕师学AI12 小时前
RKE(Rancher Kubernetes Engine) 是什么?
云原生·容器·kubernetes·rancher
BLUcoding12 小时前
使用 Docker Compose 安装常用中间件
docker·中间件·容器
小义_13 小时前
【Docker】知识一
linux·docker·云原生·容器
龙飞0513 小时前
Kubernetes 排障实战:PVC 一直 Pending 的原因与解决方案
运维·学习·云原生·容器·kubernetes
岁岁种桃花儿14 小时前
流量入口Nginx动态发现K8s Ingress Controller实操指南
nginx·架构·kubernetes
礼拜天没时间.14 小时前
Docker基础操作——镜像与容器管理
linux·运维·服务器·docker·容器·centos
冗量14 小时前
Kubernetes (K8s) 基础知识、部署与运维指南
运维·容器·kubernetes
青衫客3614 小时前
从 TLS 到 Kubernetes PKI:一条证书链如何支撑整个集群安全(问题合集)
容器·kubernetes·k8s·tls
Swift社区15 小时前
Docker Compose 一键部署前后端分离项目
运维·docker·容器