文章目录
- Kubernetes Service 与 Deployment 关联与访问完整演示
- 一、核心原理:它们是怎么关联的?
- 1.1 三者关系图
- 1.2 关联的关键:Label(标签)
- 二、完整演示:从零创建到访问
- 2.1 第一步:创建 Deployment
- 2.2 第二步:创建 Service(ClusterIP 类型)
- 2.3 第三步:访问 Service(ClusterIP 方式)
- 方式一:用临时测试 Pod 访问(最常用)
- 方式二:用 kubectl port-forward 转发到本地
- 方式三:直接 curl Pod IP(调试用,不推荐生产)
- 三、Service 的三种类型与访问方式详解
- 3.1 类型对比总览
- 3.2 NodePort 类型演示
- 3.3 LoadBalancer 类型演示
- 3.4 三种类型的关系图
- 四、端口概念彻底理清
- 完整的端口流转示例
- 五、实战验证:关联是否成功?
- 5.1 验证 Service 与 Pod 的关联
- 5.2 故意制造关联失败,观察现象
- 5.3 验证负载均衡
- 六、常见问题排查
- Q1:Service 能创建,但访问不通?
- Q2:NodePort 访问超时?
- Q3:LoadBalancer 的 EXTERNAL-IP 一直 pending?
- 七、一键完整演示脚本
- 八、总结
Kubernetes Service 与 Deployment 关联与访问完整演示
一、核心原理:它们是怎么关联的?
1.1 三者关系图
┌─────────────────────────────────────────────────────┐ │ Deployment │ │ (管理 Pod 副本数、滚动更新、版本回滚) │ │ │ │ spec.selector.matchLabels: {app: nginx} │ │ template.metadata.labels: {app: nginx} │ └───────────────┬─────────────────────────────────────┘ │ 管理(创建/销毁/更新) ▼ ┌─────────────────────────────────────────────────────┐ │ Pods │ │ nginx-7c9d8f5b6a-abcde labels: app=nginx │ │ ng