文章目录
- Kubernetes Service 完整讲解(入门 → 进阶 → 高级)
- 第一部分:入门篇
- 1.1 Service 是什么?为什么需要它?
- 大白话解释
- 专家视角
- 1.2 Service 的四种类型
- 1.3 用你现有的资源演示
- 查看 Deployment 和 Pod
- 查看 Service 和 Endpoints(最关键的关联验证)
- 测试访问
- 1.4 创建 Service 的两种方式
- 方式一:命令行(kubectl expose)
- 方式二:YAML 文件(推荐,可版本管理)
- 1.5 三个端口的区别(新手最容易混淆)
- 第二部分:进阶篇
- 2.1 Service 的底层原理:kube-proxy
- 大白话
- 专家视角
- 查看你的 kube-proxy 模式
- 2.2 Endpoints 与 EndpointSlice
- Endpoints 是什么
- EndpointSlice(v1.21+ 默认启用)
- 2.3 会话亲和性(Session Affinity)
- 两种模式
- 实战演示
- 2.4 多端口 Service
- 2.5 无头 Service(Headless Service)
- 什么是无头 Service
- 使用场景
- 实战演示
- 2.6 Service 与 Pod 的关联机制(label selector)
- 核心原理
- 实战:手动修改标签,观察 Endpoints 变化
- 第三部分:高级篇
- 3.1 kube-proxy IPVS 模式深度配置
- 切换到 IPVS 模式
- IPVS 支持的调度算法
- 修改调度算法
- 3.2 ExternalName Service:访问集群外服务
- 场景
- 与普通 Service 的区别
- 3.3 Service 拓扑感知(Topology Aware Hints)
- 问题
- 解决方案
- 启用方式
- 3.4 Service 内部流量策略(Internal Traffic Policy)
- 问题
- 解决方案
- 两种策略对比
- 3.5 Service 与 Ingress 的关系与区别
- 架构图
- 你的环境部署 Ingress-Nginx
- 3.6 Service 性能调优
- 问题场景
- 优化方案
- IPVS 模式下的调优参数
- 3.7 Service 安全:NetworkPolicy
- 场景
- 3.8 无选择器的 Service(手动管理 Endpoints)
- 场景
- 第四部分:实战综合演练
- 4.1 完整实验:从创建到排错
- 步骤 1:创建 Deployment
- 步骤 2:创建三种类型的 Service
- 步骤 3:验证
- 步骤 4:服务发现验证(删 Pod 自动更新)
- 4.2 常见问题排查清单
- 4.3 你的环境专属注意事项
- 总结
Kubernetes Service 完整讲解(入门 → 进阶 → 高级)
基于你的环境(v1.24.17 + Calico + 已有 nginx-new-deploy),用你现有的资源做实战演示。
第一部分:入门篇
1.1 Service 是什么?为什么需要它?
大白话解释
Pod 是短命的——随时可能被删除、重建、伸缩。每次重建 Pod,IP 都会变。如果客户端直接连 Pod IP,Pod 一挂就失联了。
Service 就是给一组 Pod 提供一个固定的访问入口(虚拟 IP),不管后面 Pod 怎么变,这个入口不变。
客户端 → Service IP(固定不变)→ 自动转发 → Pod1 / Pod2 / Pod3(IP 可能变)专家视角
Service 是 Kubernetes 的一种资源对象,通过label selector选中一组 Pod,为它们提供:
- 稳定的虚拟 IP(ClusterIP)
- 负载均衡(默认轮询/随机)
- 服务发现(通过 DNS 名访问)
- 端口映射(Service port → Pod targetP