Kubernetes 学习笔记(一)| 理解 Pod 与 Service 的本质

Kubernetes 学习笔记(一)| 理解 Pod 与 Service 的本质
GnaixEuy本文记录了我在使用 OrbStack 搭建本地 Kubernetes 环境时的学习过程,从 Pod 到 Service,再到 ClusterIP 的本质理解,帮助我更清晰地建立起对 K8s 的整体认知体系。
🧠 为什么学习 Kubernetes?
随着微服务架构的广泛应用,Kubernetes 已经成为容器编排的事实标准。相比 Docker,K8s 更强调“平台级抽象能力”,我希望通过本地实践,从原理理解、命令熟悉到最终搭建一套 CI/CD 流程。
🚀 本地环境搭建(OrbStack)
OrbStack 是一款轻量但强大的容器 & 虚拟机平台,内置 Kubernetes 支持,适合 macOS 用户。
安装方式:
1
brew install --cask orbstack
安装后通过 GUI 启动 K8s(注意可能会自动拉起 Istio、Ingress 等组件)
查看 K8s 基本信息:
1 | kubectl get nodes |
📦 Pod 本质理解
✅ Pod 是 Kubernetes 中的 最小调度单位,每个 Pod 通常包含一个业务容器,也可以包含 Sidecar 辅助容器。
🧱 Pod 的两种模式:
模式 | 示例 | 特点 |
---|---|---|
单容器 Pod(最常见) | 一个 SpringBoot 实例 | 1个容器,独立运行 |
多容器 Pod(Sidecar 模式) | 应用 + Istio proxy | 共享网络/卷,生命周期绑定 |
1 | # 示例:user-service Pod(单容器) |
🔗 多副本与负载均衡
微服务(如 user-service)在 Kubernetes 中不是“多个服务一个 Pod”,而是:
1 | 多个 Pod(每个一个容器)+ Service 做负载均衡 |
通过 Deployment 管理多个 Pod 副本:
1 | apiVersion: apps/v1 |
🌐 理解 ClusterIP
ClusterIP 是最常见的 K8s Service 类型,用于在 集群内部提供负载均衡的虚拟 IP。
特点如下:
项目 | 描述 |
---|---|
类型 | ClusterIP(默认) |
作用 | Pod 组的“稳定访问入口” |
范围 | 仅限集群内部访问 |
DNS | 自动生成(如 user-service.default.svc.cluster.local) |
访问方式:
1 | curl http://user-service:8080/api/user/1 |
🛠️ 常用命令速查表(kubectl)
功能 | 命令 |
---|---|
查看所有 Pod | kubectl get po |
查看所有 Service | kubectl get svc |
创建资源 | kubectl apply -f xxx.yaml |
删除资源 | kubectl delete -f xxx.yaml |
查看日志 | kubectl logs pod-name |
进入容器 | kubectl exec -it pod-name – bash |
查看详细信息 | kubectl describe po pod-name |
资源结构解释 | kubectl explain deployment |
补全建议开启:
1 | source <(kubectl completion zsh) |
🧠 我的反思
刚开始接触 K8s 的时候,确实会觉得命令很多、名词很绕,但只要掌握以下几点,入门并不难:
- 记住 Pod ≠ 容器,Pod 是容器的“运行壳”
- 服务不是放在一个 Pod,而是通过 Service 做统一入口
- ClusterIP 是服务通信的桥梁,不负责暴露给外部
- kubectl 的结构很固定,习惯之后记忆成本反而更低
🏁 下一步计划
- 在当前 K8s 环境中部署 KubeSphere
- 启用 DevOps 模块
- 搭建完整的 CI/CD 流水线(支持 GitHub 或 GitLab)
如果你也在学习 Kubernetes,欢迎留言一起交流 🚀
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果