K8S之Service和Pod的关系(二)

在Kubernetes中,Service和Pod是解耦的访问关系 :Service为动态变化的Pod提供稳定的访问入口负载均衡

核心关系

1. 访问抽象层

  • Pod :最小部署单元,有独立IP但动态变化(重启/迁移会变)

  • Service :固定虚拟IP/DNS,作为Pod组的稳定代理

2. 标签选择器关联

Service通过selector匹配Pod标签:

yaml

复制代码
# Service定义
apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: myapp  # 选择匹配此标签的Pod
  ports:
  - port: 80
    targetPort: 9376

yaml

复制代码
# Pod标签
apiVersion: v1
kind: Pod
metadata:
  name: myapp-pod
  labels:
    app: myapp  # 被Service选中
spec:
  containers:
  - name: myapp
    image: myapp:1.0

3. 负载均衡

Service自动将流量分发到所有匹配的Pod:

text

复制代码
客户端 → Service (10.96.1.1)
            ↓ 负载均衡
    +-------+-------+-------+
    ↓       ↓       ↓       ↓
  Pod A   Pod B   Pod C   Pod D

关键特性对比

特性 Pod Service
IP地址 动态变化(Pod IP) 固定不变(ClusterIP)
生命周期 短暂,随时可能重启 长期存在,独立于Pod
网络标识 仅集群内可访问 可通过多种方式暴露(ClusterIP/NodePort/LB)
DNS名称 无独立DNS 有DNS:<service>.<ns>.svc.cluster.local
扩展性 水平扩展产生多个副本 自动发现所有副本Pod

实际工作流程

  1. 创建Pod时 :给Pod打上标签(如 app: frontend

  2. 创建Service时:设置selector匹配相同标签

  3. Service Controller

    • 监控集群中Pod变化

    • 维护Endpoint对象(Pod IP列表)

    • 更新kube-proxy的iptables/ipvs规则

  4. 流量转发

    • 客户端访问Service IP/DNS

    • kube-proxy拦截并转发到实际Pod

访问方式示例

bash

复制代码
# 集群内访问
curl http://my-service.default.svc.cluster.local

# 端口映射(NodePort类型)
curl http://<Node-IP>:30080

# 负载均衡(LoadBalancer类型)
curl http://<云厂商提供的LB-IP>

特殊类型

  • Headless ServiceclusterIP: None,DNS直接返回Pod IP列表,用于有状态应用

  • ExternalName:将服务映射到外部DNS

  • 无selector的Service:手动维护Endpoint,接入外部服务

总结

Pod是实际运行容器的载体,Service是访问这些容器的网络抽象。这种分离实现了:

  • 动态扩缩容时客户端无需感知

  • 服务发现和负载均衡

  • 部署与访问的解耦

  • 稳定的服务标识(DNS名称)

Service通过标签与Pod建立松耦合关系,使得Pod可以自由地创建、销毁、迁移,而服务访问始终保持稳定。

相关推荐
阿里云云原生3 天前
阿里云获评 Agentic AI 开发平台领导者,函数计算 AgentRun 赢下关键分!
云原生
蝎子莱莱爱打怪3 天前
Centos7中一键安装K8s集群以及Rancher安装记录
运维·后端·kubernetes
崔小汤呀3 天前
Docker部署Nacos
docker·容器
缓解AI焦虑3 天前
Docker + K8s 部署大模型推理服务:资源划分与多实例调度
docker·容器
阿里云云原生3 天前
MSE Nacos Prompt 管理:让 AI Agent 的核心配置真正可治理
微服务·云原生
阿里云云原生3 天前
当 AI Agent 接管手机:移动端如何进行观测
云原生·agent
阿里云云原生3 天前
AI 原生应用开源开发者沙龙·深圳站精彩回顾 & PPT下载
云原生
阿里云云原生3 天前
灵感启发:日产文章 100 篇,打造“实时热点洞察”引擎
云原生
1candobetter3 天前
Docker Compose Build 与 Up 的区别:什么时候必须重建镜像
docker·容器·eureka
~莫子3 天前
Haproxy七层负载详解+实验详细代码
云原生